rake を使って CodeRepos から Checkout する
MENTA や NanoA といった最近話題の WAF や、HTTP::Engine といった CodeRepos で開発が進められている最近話題のモジュール群は、ソース読むだけでも良い勉強になるので積極的に Checkout したり、Update して、なるべくソースを追いかけまわるよう、頑張っています。
が、毎回毎回
$ svn co http://svn.coderepos.org/share/lang/perl/ .... $ svn up
とかやるのが、とってもめんどくさくなってきたので、Rakefile を作って
$ rake co@HTTP-Engine # svn checkout $ rake HTTP-Engine # svn update
とかすれば Checkout したり Update したりできるようにしました。
作った Rakefile はこんなの (↓)。
# rake で引数を (簡単に) 扱う # http://subtech.g.hatena.ne.jp/cho45/20080108/1199723301 # ありがとうございまーす。 def args (hash) name = hash.keys.first args = hash[name] task name, *args end Rake.application.top_level_tasks.replace(ARGV.map {|a| name, vals = *a.split(/@/, 2) vals ? "#{name}[#{vals}]" : a }) # Directory 一覧取得 dirs = Dir.entries('./').reject! do |d| !FileTest.directory?(d) || /^\.+/ =~ d end # default なぜかできない! #task :default => :up # update desc "all update" task :up => dirs dirs.each do |d| desc "svn up #{d}" task d do |t| sh "svn up #{d}" end end # check out desc "check out" args :co => [:repos] task :co do |t, a| sh "svn co http://svn.coderepos.org/share/lang/perl/#{a.repos}/trunk #{a.repos}" unless a.repos.nil? end
で、こんな感じの場所 (↓) に配置すれば OK。
$ pwd /home/my/perl/CodeRepos $ ls CGI-ExceptionManager/ HTTP-Engine/ HTTP-Router/ MENTA/ NanoA/ Rakefile
わーい。って、実は Shell Script で十分なんですけど。
まぁ、Rakefile の書き方のお勉強ということで。