X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=Rakefile;h=822fe7327fe1f841ca28194470f67118f382bf5b;hb=07edf3c56db6d05346a3e2dbfff12698e543c090;hp=be00f4ed61b726f73f23ddb972cf76ff641915f8;hpb=f517d2c537ab9fb749caa06df07f124922725954;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/Rakefile b/Rakefile index be00f4ed..822fe732 100644 --- a/Rakefile +++ b/Rakefile @@ -2,11 +2,11 @@ require 'rubygems' require 'rake' require 'rake/gempackagetask' -task :default => [:repackage] +task :default => [:buildext] spec = Gem::Specification.new do |s| s.name = 'rbot' - s.version = '0.9.11' + s.version = '0.9.15' s.summary = <<-EOF A modular ruby IRC bot. EOF @@ -16,8 +16,11 @@ spec = Gem::Specification.new do |s| s.requirements << 'Ruby, version 1.8.0 (or newer)' # s.files = Dir.glob("**/*").delete_if { |item| item.include?(".svn") } - s.files = FileList['lib/**/*.rb', 'bin/*', 'data/**/*', 'AUTHORS', 'COPYING', 'README', 'REQUIREMENTS', 'TODO', 'ChangeLog', 'INSTALL', 'Usage_en.txt', 'setup.rb'].to_a.delete_if {|item| item == ".svn"} - s.executables << 'rbot' + s.files = FileList['lib/**/*.rb', 'bin/*', 'data/rbot/**/*', 'AUTHORS', 'COPYING', 'README', 'REQUIREMENTS', 'TODO', 'ChangeLog', 'INSTALL', 'Usage_en.txt', 'setup.rb', 'po/*.pot', 'po/**/*.po'].to_a.delete_if {|item| item == ".svn"} + s.bindir = 'bin' + s.executables = ['rbot', 'rbot-remote'] + s.default_executable = 'rbot' + s.extensions = 'Rakefile' # s.autorequire = 'rbot/ircbot' s.has_rdoc = true @@ -39,11 +42,6 @@ end def normalize_po(fn) content = File.read(fn) - # replace project-id-version placholder - modified = content.sub!(/^("Project-Id-Version: )PACKAGE VERSION(\\n")$/) { - "#{$1}rbot#{$2}" - } - # sort the messages by file location if MSGCAT sorted = `#{MSGCAT} --width=79 --sort-by-file #{fn}` @@ -53,6 +51,11 @@ def normalize_po(fn) end end + # replace project-id-version placholder + modified |= content.sub!(/^("Project-Id-Version: )PACKAGE VERSION(\\n")$/) { + "#{$1}rbot#{$2}" + } + if modified File.open(fn, 'w') {|f| f.write content} end @@ -74,7 +77,7 @@ task :define_po_rules do GetText.rgettext(source_files, new_pot_file) # only use the new pot file if it contains unique messages - if MSGCOMM && `#{MSGCOMM} --unique #{pot_file} #{new_pot_file}`.empty? + if File.exists?(pot_file) && MSGCOMM && `#{MSGCOMM} --unique #{pot_file} #{new_pot_file}`.empty? rm new_pot_file else mv new_pot_file, pot_file @@ -102,7 +105,15 @@ task :define_po_rules do require 'gettext/utils' po_file, pot_file = t.name, t.source puts "#{pot_file} => #{po_file}" - sh "#{MSGMERGE} --backup=off --update #{po_file} #{pot_file}" + if File.exists? po_file + sh "#{MSGMERGE} --backup=off --update #{po_file} #{pot_file}" + elsif MSGINIT + locale = po_file[%r'^po/(.+)/.+\.po$', 1] + sh "#{MSGINIT} --locale=#{locale} --no-translator --input=#{pot_file} --output-file=#{po_file}" + else + warn "#{po_file} is missing and cannot be generated without msginit" + next + end normalize_po(po_file) touch po_file end @@ -142,6 +153,9 @@ task :check_po_tools do 'msgmerge' => { :options => %w[--backup= --update], :message => 'Cannot update po files' }, + 'msginit' => { + :options => %w[--locale= --no-translator --input= --output-file=], + :message => 'Cannot generate missing po files' }, 'msgcomm' => { :options => %w[--unique], :message => 'Pot files may be modified even without message change' }, @@ -177,9 +191,25 @@ task :updatepo => [:define_po_rules, :check_po_tools] + LOCALES.map {|l| PLUGIN_BASENAMES.map {|n| "po/#{l}/rbot-#{n}.po"} }.flatten +desc 'Normalize po files' +task :normalizepo => :check_po_tools do + FileList['po/*/*.po'].each {|fn| normalize_po(fn)} +end + +# this task invokes makemo if ruby-gettext is available, but otherwise succeeds +# with a warning instead of failing. it is to be used by Gem's extension builder +# to make installation not fail because of lack of ruby-gettext +task :buildext do + begin + require 'gettext/utils' + Rake::Task[:makemo].invoke + rescue LoadError + warn 'Ruby-gettext cannot be located, so mo files cannot be built and installed' + end +end + 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 +task :makemo => + FileList['po/*/*.po'].pathmap('%{^po,data/locale}d/LC_MESSAGES/%n.mo') +