diff options
| -rwxr-xr-x | minirake | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -237,7 +237,8 @@ module MiniRake # Time stamp for file task. def timestamp - File::stat(name.to_s).mtime + stat = File::stat(name.to_s) + stat.directory? ? Time.at(0) : stat.mtime end end @@ -254,12 +255,14 @@ module MiniRake # Declare a set of files tasks to create the given directories on # demand. - def directory(dir) - path = [] - Sys.split_all(dir).each do |p| - path << p - FileTask.define_task(File.join(path)) do |t| - Sys.makedirs(t.name) + def directory(args, &block) + MiniRake::FileTask.define_task(args) do |t| + block.call(t) unless block.nil? + dir = args.is_a?(Hash) ? args.keys.first : args + dir.split(File::SEPARATOR).reject(&:empty?).inject("") do |acc, part| + (acc + File::SEPARATOR + part).tap do |d| + Dir.mkdir(d) unless File.exists? d + end end end end |
