X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=blobdiff_plain;f=rosetta-merge;h=a1b50193696adf8f7371b436a0d670c06b41a75c;hb=7ce84f545e01a1567235e8bef09b5e92b1bd04d0;hp=2e8c1dab1e8f1ec88bb7c6e5b9de0fb60fb982d9;hpb=98ccd316105dc52469c027bb6e88ece72344fe69;p=bin.git diff --git a/rosetta-merge b/rosetta-merge index 2e8c1da..a1b5019 100755 --- a/rosetta-merge +++ b/rosetta-merge @@ -1,29 +1,72 @@ #! /bin/bash +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 -if [ "$1" = --apply ]; then - APPLY=: - shift -fi +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 -case $2 in +MY_LANG="$1" +case $MY_LANG in pa_IN) ROSETTA_LANG=pa ;; *) - ROSETTA_LANG="$2" + ROSETTA_LANG="$MY_LANG" ;; esac -[ -e $1/$ROSETTA_LANG.po ] || exit -msgmerge -q -N <(msgconv -t UTF-8 $1/$ROSETTA_LANG.po | msgattrib --no-obsolete -) *.pot | msgattrib --no-obsolete $MSGATTRIB_OPTS - | \ - if [ -e $2.po ]; then - msgmerge -q -N - <(msgconv -t UTF-8 $2.po | msgattrib --no-obsolete -) | msgattrib --no-obsolete - +[ -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 $2.po + sponge $MY_LANG.po else - diff -u --label $2.po <(msgconv -t UTF-8 $2.po) - + diff -u --label $MY_LANG.po <(msgconv -t UTF-8 $MY_LANG.po) - fi