Skip to content

Instantly share code, notes, and snippets.

@takkkun
Created February 12, 2013 08:39
Show Gist options
  • Save takkkun/4760996 to your computer and use it in GitHub Desktop.
Save takkkun/4760996 to your computer and use it in GitHub Desktop.
# 1. src/**/*.txtにマッチするファイル(例: src/hello/goodbye.txt)を探し
# 2. マッチしたファイルを:targetオプションに指定した方法で目的のファイル名(例: work/hello/goodbye.normalized.txt)を求め
# 3. `file 目的のファイル名 => マッチしたファイル名`というタスクを作る
#
# ってことがしたい。ちなみにgenerate_fromの返り値は目的のファイル名の一覧
work_files = generate_from 'src/**/*.txt', :target => ['work', :dirname, :filename, '.normalized.txt'] do |t|
sh "./normalize #{t.from} #{t.to}" # ./normalize-text-file src/hello/goodbye.txt work/hello/goodbye.normalized.txt
end
# 直前のタスクの定義で得たファイル名の一覧を使ってさらにタスクを定義したり
target_files = generate_from work_files, :target => ['target', :dirname, :filename, '.target.txt'] do |t|
sh "./generate #{t.from} #{t.to}" # ./generate work/hello/goodbye.normalized.txt target/hello/goodbye.target.txt
end
# まとめたり
file 'target/all' => target_files do |t|
sh "./aggregate -s #{t.prerequisites.join(',')} #{t.name}" # ./aggregate -s target/hello/goodbye.target.txt,... target/all
end
# できるrake用プラグインないのかな?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment