-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
puts "#{pot_file} => #{po_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
- cp pot_file, po_file
+ 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}"
'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' },
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 }