# File lib/automateit/shell_manager/portable.rb, line 150
  def mkdir(dirs, opts={}, &block)
    _replace_owner_with_user(opts)
    kind = opts[:parents] ? :mkdir_p : :mkdir
    missing = [dirs].flatten.select{|dir| ! File.directory?(dir)}
    result = false
    if missing.empty? and not block
      chperm(opts) if opts[:user] or opts[:group] or opts[:mode]
      return result
    end
    unless missing.empty?
      cmd = kind.to_s.gsub(/_/, ' -')
      log.info(PEXEC+"#{cmd} #{missing.join(" ")}")
      result = [FileUtils.send(kind, missing, _fileutils_opts)].flatten
      result = result.first if [dirs].flatten.size == 1
    end
    if block
      if missing.size > 1
        raise ArgumentError.new(
          "can only use a block if you mkdir a single directory")
      end
      dir = [dirs].flatten.first
      cd(dir) do
        block.call(result)
      end
    end
    chperm(opts) if opts[:user] or opts[:group] or opts[:mode]
    return missing
  end