tDiary の contrib パッケージ用の Rakefile 書いた
tDiary-contrib を CoreRepos に移管中の hsbt さんが Twitterでつぶやいてたので、 Rakefile を使ってスクリプトを書いた。 やってることはシンプルで、 CodeRepos のリポジトリから最新版を取得して、 tar.gz でアーカイブするだけ。 シェルでも2行で書けるだろうけど、 Rakefile を使う利点もある。
- contrib が更新されたときだけ、パッケージ (tdiary-contrib.tar.gz) を再生成する
…あれ?これだけ?? う、うーん。
- Rakefile の使い方をちょっと覚えた
- 将来的にタスクを増やしたいときに管理が楽
Rakefile の中身はこうなってる。
package_name = 'tdiary-contrib.tar.gz' excludes = [".svn", "Rakefile", package_name] desc 'Update files from Subversion Repository' task :update do |t| sh "svn update" end desc 'Packaged tDiary-contrib files' file package_name => FileList["./**/*"] do |t| sh "tar zcf #{package_name} . " + excludes.map{|f| "--exclude #{f}"}.join(' ') end
以下、備忘録を兼ねてポイントだけ。
- tar の --exclude オプションを使って、 .svn ディレクトリと Rakefile と自分自身 (tdiary-contrib.tar.gz) をアーカイブ対象から除外している
- FileList を使えばワイルドカードを使って依存関係のファイルを指定できる
- FileList で ** と書くと、ディレクトリを再帰的にたどってくれる (Makefile にも同じ機能あるのかな?)
- FileList で **/* と書くとタスクが無限ループになってエラーになるので、 ./**/* と書いている