X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=Rakefile;h=6b321fdc166d400fafa8911e802bdc92a885b292;hb=3b83d8870cc04a2b0eff4250dd8deef9ea1d697b;hp=80be978238247394864f1c6ae4f50ac99b9b8bb7;hpb=7334553f8bc335188533669df733f05b12147af0;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/Rakefile b/Rakefile index 80be9782..6b321fdc 100644 --- a/Rakefile +++ b/Rakefile @@ -2,11 +2,11 @@ require 'rubygems' require 'rake' require 'rake/gempackagetask' -task :default => [:package] +task :default => [:repackage] spec = Gem::Specification.new do |s| s.name = 'rbot' - s.version = '0.9.9' + s.version = '0.9.11' s.summary = <<-EOF A modular ruby IRC bot. EOF @@ -26,7 +26,7 @@ spec = Gem::Specification.new do |s| s.author = 'Tom Gilbert' s.email = 'tom@linuxbrit.co.uk' - s.homepage = 'http://linuxbrit.co.uk/rbot/' + s.homepage = 'http://ruby-rbot.org' s.rubyforge_project = 'rbot' end @@ -35,3 +35,64 @@ Rake::GemPackageTask.new(spec) do |pkg| pkg.need_tar = true end +PLUGIN_FILES = FileList['data/rbot/plugins/**/*.rb'] +NON_PLUGIN_FILES = FileList["{lib,bin,data}/**/*.{rb,rhtml}"] - PLUGIN_FILES +rgettext_proc = proc do |t| + require 'gettext/utils' + source_files, pot_file = t.prerequisites, t.name + puts "#{source_files.join(', ')} => #{pot_file}" + GetText.rgettext(source_files, pot_file) +end + +# generate pot file for non-plugin files +file('po/rbot.pot' => NON_PLUGIN_FILES, &rgettext_proc) + +# generate pot files for plugin files +rule(%r'^po/.+\.pot$' => proc {|fn| + PLUGIN_FILES.select {|f| f.pathmap('rbot-%n') == fn.pathmap('%n')} +}, &rgettext_proc) + +# update po files +# ruby-gettext treats empty output from msgmerge as error, causing this task to +# fail. we provide a wrapper to work around it. see bin/msgmerge-wrapper.rb for +# details +ENV['REAL_MSGMERGE_PATH'] = ENV['MSGMERGE_PATH'] +ENV['MSGMERGE_PATH'] = ENV['MSGMERGE_WRAPPER_PATH'] || 'ruby msgmerge-wrapper.rb' +rule(%r'^po/.+/.+\.po$' => proc {|fn| fn.pathmap '%{^po/.+/,po/}X.pot'}) do |t| + require 'gettext/utils' + po_file, pot_file = t.name, t.source + puts "#{pot_file} => #{po_file}" + GetText.msgmerge po_file, pot_file, 'rbot' +end + +# generate mo files +rule(%r'^data/locale/.+/LC_MESSAGES/.+\.mo$' => proc {|fn| + [ fn.pathmap('%{^data/locale,po;LC_MESSAGES/,}X.po'), + # the directory is created if not existing + fn.pathmap('%d') ] +}) do |t| + po_file, mo_file = t.source, t.name + puts "#{po_file} => #{mo_file}" + require 'gettext/utils' + GetText.rmsgfmt po_file, mo_file +end + +PLUGIN_BASENAMES = PLUGIN_FILES.map {|f| f.pathmap('%n')} +LOCALES = FileList['po/*/'].map {|d| d.pathmap('%n')} + +LOCALES.each do |l| + directory "data/locale/#{l}/LC_MESSAGES" +end + +desc 'Update po files' +task :updatepo => LOCALES.map {|l| + ["po/#{l}/rbot.po"] + + PLUGIN_BASENAMES.map {|n| "po/#{l}/rbot-#{n}.po"} +}.flatten + +desc 'Generate mo files' +task :makemo => LOCALES.map {|l| + ["data/locale/#{l}/LC_MESSAGES/rbot.mo"] + + PLUGIN_BASENAMES.map {|n| "data/locale/#{l}/LC_MESSAGES/rbot-#{n}.mo"} +}.flatten +