X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=Rakefile;h=1bd782eab2fe61a751779bea05815ccf3526cc2f;hb=ac8529c8370bd6dbcb0947bc14e1cc2117826a29;hp=62661bdd35cf46341d0db3bf42742ffddf9bd18d;hpb=5abc0b68520c1a1ae9998f71bdfb7221aaf7b6ee;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/Rakefile b/Rakefile index 62661bdd..1bd782ea 100644 --- a/Rakefile +++ b/Rakefile @@ -1,52 +1,30 @@ -require 'rubygems' require 'rake' -require 'rake/gempackagetask' +require 'rubygems/package_task' task :default => [:buildext] -spec = Gem::Specification.new do |s| - s.name = 'rbot' - s.version = '0.9.11' - s.summary = <<-EOF - A modular ruby IRC bot. - EOF - s.description = <<-EOF - A modular ruby IRC bot specifically designed for ease of extension via plugins. - EOF - 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/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 - s.rdoc_options = ['--exclude', 'post-install.rb', - '--title', 'rbot API Documentation', '--main', 'README', 'README'] - - s.author = 'Tom Gilbert' - s.email = 'tom@linuxbrit.co.uk' - s.homepage = 'http://ruby-rbot.org' - s.rubyforge_project = 'rbot' +rule '.1' => ['.xml'] do |t| + sh "xsltproc -nonet -o #{t.name} /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl #{t.source}" end -Rake::GemPackageTask.new(spec) do |pkg| - pkg.need_zip = true - pkg.need_tar = true +task :manpages => ['man/rbot.1'] + +SPECFILE = 'rbot.gemspec' +# The Rakefile is also used after installing the gem, to build +# the .mo files. Since in this case the SPECFILE is not available, +# we must (and can) skip defining the gem packaging tasks. +if File.exist? SPECFILE + spec = eval(File.read(SPECFILE), nil, SPECFILE) + Gem::PackageTask.new(spec) do |pkg| + pkg.need_zip = true + pkg.need_tar = true + end end # normalize a po/pot file 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}` @@ -56,6 +34,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 @@ -77,7 +60,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 @@ -105,13 +88,21 @@ 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 # generate English po files - file(%r'^po/en_US/.+\.po$' => pot_for_po) do |t| + file(%r'^po/en/.+\.po$' => pot_for_po) do |t| po_file, pot_file = t.name, t.source if MSGEN sh "#{MSGEN} --output-file=#{po_file} #{pot_file}" @@ -145,6 +136,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' }, @@ -198,8 +192,7 @@ task :buildext do 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') +Dir['tasks/**/*.rake'].each { |t| load t }