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