class Musicality::Tasks::FileRaker
Attributes
file_ext[R]
files[R]
subdirs[R]
task_name[R]
Public Class Methods
new(parent_filelist, task_name, file_ext, &rule_block)
click to toggle source
# File lib/musicality/project/file_raker.rb, line 7 def initialize parent_filelist, task_name, file_ext, &rule_block raise ArgumentError, "parent filelist is empty" if parent_filelist.empty? raise ArgumentError, "no rule block given" unless block_given? parent_exts = parent_filelist.map {|str| File.extname(str) }.uniq raise ArgumentError, "multiple file extensions in parent filelist: #{parent_filelist}" unless parent_exts.one? @task_name, @file_ext = task_name, file_ext @subdirs = parent_filelist.pathmap("#{Project::OUT_DIR}/%n") @files = parent_filelist.pathmap("#{Project::OUT_DIR}/%n/%n#{file_ext}") directory Project::OUT_DIR @subdirs.each { |subdir| directory subdir } task task_name => [Project::OUT_DIR] + @subdirs + @files find_parent_file = lambda do |f| parent_filelist.detect do |f2| File.basename(f2.ext("")) == File.basename(f.ext("")) end end rule file_ext => find_parent_file do |t| rule_block.call(t) end end