2007年12月21日

[ruby-list:44376] Re: Rake 改善プロジェクト

西松です。

--- rubikitch@xxxxx wrote:
> > * clobber(「とことん消す」デフォルトのタスク)が恐すぎるので
> > 無効にできる機能が欲しい。
>
> 極めて強引ですがこれでどうでしょうか?
> Rake::Task[:clobber].instance_eval{@actions = []}


ありがとうございます。
これ、Rakefileのどこに書けばよいのでしょうか。いろいろ試したのですが、
rake clobberでことごとく消えてしまうのを止められません。
具体的には http://rubyforge.org/projects/isi-rb/ の Rakefile です。
最後に添付します。ヒントをいただけたら幸いです。

makeと違ってデフォルトのタスク/ターゲットがあるのがrakeの特徴なのだとは
思いますが、このclobberはお節介以外のなにものでもないです。


> > * どうしてもmakeと打ってしまうので、`GNUmakefile', `makefile',
> > `Makefile'が見当たらなくて、Rakefileがあったらrakeを起動する
> > ようにするGNU makeへのパッチ。
>
> シェル関数かラッパーを作って優先的に実行できるディレクトリに置くとかはどうでしょう?

こんなかんじですかね:
#!/bin/sh
##
if [ -f GNUmakefile -o -f makefile -o -f Makefile ]; then
make $*
elif [ -f Rakefile ]; then
rake $*
else
echo "$0: Neither Makefile nor Rakefile are found."
exit 1
fi

あと、最近のシェルは
$ make [TAB][TAB]
とすると、Makefileの中のターゲットまで見てコンプリーションをしてくれます。
rake --tasks まで見てくれるとうれしいなぁ。
たぶん、「Rake改善プロジェクトの範疇外」になっちゃうんでしょうけど。
−−西松タケシ

#! /usr/bin/env rake
# -*-Ruby-*-
# Time-stamp: <2007-08-21 13:17:15 takeshi>
# Author: Takeshi Nishimatsu
##
$LOAD_PATH.unshift('lib')

require 'rubygems'
require 'rake/gempackagetask'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/clean'
require 'rake/contrib/rubyforgepublisher'
require 'isi.rb'
require 'archive/tar/minitar'
require 'zlib'

spec = eval(File.read("isi.gemspec"))
spec.version = ISI_RB_VERSION
RDOC_OPTS = %w(--title isi --main README --line-numbers)
spec.rdoc_options = RDOC_OPTS
ISI_PACKAGE_DIR = '..'
CLEAN.include('html')

desc "Build the RubyGem for isi"
task :gem => [ :test ]
Rake::GemPackageTask.new(spec) do |g|
g.need_tar = true
g.need_zip = true
g.package_dir = ISI_PACKAGE_DIR
end

task :default => [ :test ]

desc "Run the unit and functional tests"
task :test
Rake::TestTask.new do |t|
t.test_files = FileList['tests/*.rb']
t.verbose = true
end

Rake::RDocTask.new do |rdoc|
rdoc.rdoc_dir = 'html'
rdoc.options = RDOC_OPTS
if ENV['DOC_FILES']
rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
else
rdoc.rdoc_files.include('README')
rdoc.rdoc_files.include('lib/**/*.rb')
end
end

desc "Build Packages"
task :package => [ :rdoc, :isi_version_rb ]

desc "Publish to RubyForge"
task :rubyforge => [ :rdoc ] do
Rake::RubyForgePublisher.new('isi-rb', 't-nissie').upload
end

desc "Copy lib/isi.rb ../isi-X.Y.Z.rb"
task :isi_version_rb do
FileUtils.copy_file('lib/isi.rb', ISI_PACKAGE_DIR + '/isi-' + ISI_RB_VERSION + '.rb')
end


投稿者 xml-rpc : 2007年12月21日 06:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67898
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。