From dd64d68b79cc41d3457c4abb6e2ec998b9721df8 Mon Sep 17 00:00:00 2001 From: Yaohan Chen Date: Sat, 7 Jun 2008 15:48:53 -0400 Subject: [PATCH] add wrapper for msgmerge to workaround gettext bug with "empty" pot files --- Rakefile | 6 ++++++ bin/msgmerge-wrapper.rb | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100755 bin/msgmerge-wrapper.rb diff --git a/Rakefile b/Rakefile index b44ca95f..c1bc780e 100644 --- a/Rakefile +++ b/Rakefile @@ -37,6 +37,12 @@ end desc "Update pot/po files." task :updatepo do + # 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'] = 'bin/msgmerge-wrapper.rb' + require 'gettext/utils' plugin_files = Dir.glob('data/rbot/plugins/**/*.rb') # all except plugin files use the rbot textdomain diff --git a/bin/msgmerge-wrapper.rb b/bin/msgmerge-wrapper.rb new file mode 100755 index 00000000..975107e3 --- /dev/null +++ b/bin/msgmerge-wrapper.rb @@ -0,0 +1,21 @@ +#!/usr/bin/ruby +# This is a wrapper to msgmerge, it executes msgmerge with the given arguments, and +# if msgmerge output is empty, prints the content of the file named the first +# argument. otherwise it prints the output of msgmerge. The wrapper should be +# "compatible" with the real msgmerge if msgmerge output is non-empty, or if the +# first argument is the defpo file (instead of an option, or --) +# +# The path to msgmerge can be specified in env variable REAL_MSGMERGE_PATH +# +# The purpose is to provide a workaround for ruby-gettext, which treats empty output +# from msgmerge as error in the po file, where it should mean that no modification +# is needed to the defpo. For updates on the issue follow +# http://rubyforge.org/pipermail/gettext-users-en/2008-June/000094.html + + +msgmerge = ENV['REAL_MSGMERGE_PATH'] || 'msgmerge' +defpo = ARGV.shift +output = `#{msgmerge} #{defpo} #{ARGV.join ' '}` +output = File.read(defpo) if output.empty? +STDOUT.write output + -- 2.39.2