chiark / gitweb /
pull-mail: add --force option; extend running times
[bin.git] / rosetta-merge
index 9119bc9a6547d9174afcdaa266c3d02162823d3a..a1b50193696adf8f7371b436a0d670c06b41a75c 100755 (executable)
@@ -1,3 +1,72 @@
 #! /bin/bash
-[ -e ../../../rosetta-$1/$2.po ] || exit
-msgmerge -q <(msgconv -t UTF-8 ../../../rosetta-$1/$2.po | msgattrib --no-obsolete -) <(msgconv -t UTF-8 $2.po | msgattrib --no-obsolete -) | msgmerge -q - <(msgconv -t UTF-8 $2.po | msgattrib --no-obsolete -) | diff -u --label $2.po <(msgconv -t UTF-8 $2.po) -
+
+usage () {
+       [ "$1" = 0 ] || exec >&2
+       echo "Usage: $0 [--apply] [--keep-old] [--prefix PREFIX] SOURCE LANG"
+       exit "$1"
+}
+
+die_getopt () {
+       echo "getopt failed" >&2
+       exit 1
+}
+
+APPLY=false
+KEEP_OLD=false
+PREFIX=
+eval set -- "$(getopt -o '' -l apply,keep-old,prefix:,help -- "$@")" || die_getopt
+while :; do
+       case $1 in
+               --apply)
+                       APPLY=:
+                       shift
+                       ;;
+               --keep-old)
+                       KEEP_OLD=:
+                       shift
+                       ;;
+               --prefix)
+                       PREFIX="${2%-}-"
+                       shift 2
+                       ;;
+               --help)
+                       usage 0
+                       shift
+                       ;;
+               --)     shift; break ;;
+               *)      die_getopt ;;
+       esac
+done
+
+[ "$1" ] || usage 1
+
+SOURCE="$1"
+shift
+
+MY_LANG="$1"
+case $MY_LANG in
+       pa_IN)
+               ROSETTA_LANG=pa
+               ;;
+       *)
+               ROSETTA_LANG="$MY_LANG"
+               ;;
+esac
+
+[ -e $SOURCE/$PREFIX$ROSETTA_LANG.po ] || exit
+msgmerge -q -N <(msgconv -t UTF-8 $SOURCE/$PREFIX$ROSETTA_LANG.po | msgattrib --no-obsolete -) *.pot | msgattrib --no-obsolete $MSGATTRIB_OPTS - | \
+       if [ -e $MY_LANG.po ]; then
+               if $KEEP_OLD; then
+                       msgmerge -q -N <(msgconv -t UTF-8 $MY_LANG.po | msgattrib --no-obsolete -) *.pot -C -
+               else
+                       msgmerge -q -N - <(msgconv -t UTF-8 $MY_LANG.po | msgattrib --no-obsolete -)
+               fi | \
+               msgattrib --no-obsolete -
+       else
+               cat
+       fi | \
+       if $APPLY; then
+               sponge $MY_LANG.po
+       else
+               diff -u --label $MY_LANG.po <(msgconv -t UTF-8 $MY_LANG.po) -
+       fi