Ruby言語やLinuxのネタが多いです。
October 25, 2004 [おもひで]
■ [Ruby] raadepchecker.rb
RAAのDependencyの件で、なひさんとメールでやりとりさせていただいた中で
RAAに登録した自作アプリ・ライブラリが他のライブラリたちに依存している時、他のライブラリたちがバージョンアップされると、RAA的には互換性が保証されない状態になる。その場合は、再度、依存している他のライブラリの最新版と自作アプリ・ライブラリがきちんと動作するか確認した上でRAAのdependenciesをアップデートすべきである
というポリシーがあると伺った。
ちょっと厳しい気もしないでもないが確実性という意味ではやむをえないのかなとも思う。
■ とはいえ、いくつか登録しているアプリ・ライブラリが依存しているライブラリのアップデート状況をWWWブラウザでチェックするのもメンドウクチャイ。
幸い、RAAはSOAPインタフェイスを持っているので、それを使ってチェッカを作ってみた。名付けて「自作ライブラリ依存先ライブラリアップデートチェッカ」....長い。
require 'soap/wsdlDriver'
module RAADepChecker
RAA_URI = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/"
EMPTY = 0
UPDATED = 1
NOCHANGED = 2
NOTFOUND = 3
module_function
def get_project(prj_id)
raa = SOAP::WSDLDriverFactory.new(RAA_URI).create_driver
gem = raa.gem(prj_id)
gem.project if gem
end
# [[prj_id, req_version, newest_version], ...]
def check_dependencies(prj)
ret = []
if prj.dependency.size == 0
ret << [EMPTY, prj.name, nil, nil]
end
prj.dependency.each {|dep|
dep_prj = RAADepChecker.get_project(dep.project)
if dep_prj and dep_prj.version != dep.version
ret << [UPDATED, dep.project, dep.version, dep_prj.version]
elsif dep_prj
ret << [NOCHANGED, dep.project, dep.version, dep_prj.version]
else
ret << [NOTFOUND, dep.project, dep.version, nil]
end
}
ret
end
end
if __FILE__ == $0
ARGV.each do |prj_id|
puts "\n-- #{prj_id} ------"
prj = RAADepChecker.get_project(prj_id)
if prj
RAADepChecker.check_dependencies(prj).each do |v|
case v[0]
when RAADepChecker::EMPTY
puts "No dependencies."
when RAADepChecker::UPDATED
puts "Required #{v[1]} #{v[2]} : Updated to #{v[3]}."
when RAADepChecker::NOCHANGED
puts "Required #{v[1]} #{v[2]} : Nothing has been changed."
else RAADepChecker::NOTFOUND
puts "Required #{v[1]} #{v[2]} : No entry in RAA."
end
end
else
puts "No entry in RAA."
end
end
end
ruby raadepchecker.rb project1 project2 .... と言う感じで使う。試しに、Ruby-GNOME2, rbbr, ruby-gettext-packageの結果を表示してみる。
$ruby raadepchecker.rb ruby-gnome2 rbbr ruby-gettext -- ruby-gnome2 ------ No dependencies. -- rbbr ------ Required ruby-gnome2 0.9.1 : Updated to 0.10.1. Required ruby-gettext 0.5.4 : Updated to 0.7.0. -- ruby-gettext ------ Required racc 1.4.4 : Nothing has been changed.
つまり、rbbrはruby-gnome2-0.10.1, ruby-gettext-0.7.0で動作確認してRAAのエントリをアップデートしなきゃならんのう、ということがわかるわけだ。たまに気が向いたら実行してみればいいさぁ。
■ うーん、ちょっとは便利になったかな。でも、やっぱりメンドクチャイ!
■ また、余計なものを作ってしまった...。そんなことよりRuby/GnomeCanvas2どうにかしないと...(T_T)。
