From: Colin Watson Date: Fri, 27 Mar 2009 15:51:39 +0000 (+0000) Subject: getopt option parsing; usage message X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?p=bin.git;a=commitdiff_plain;h=cbca6d095e8b83058c4151ff16b3dc3552fe5b56 getopt option parsing; usage message --- diff --git a/rosetta-merge b/rosetta-merge index b34676c..a1b5019 100755 --- a/rosetta-merge +++ b/rosetta-merge @@ -1,22 +1,44 @@ #! /bin/bash -APPLY=false -if [ "$1" = --apply ]; then - APPLY=: - shift -fi +usage () { + [ "$1" = 0 ] || exec >&2 + echo "Usage: $0 [--apply] [--keep-old] [--prefix PREFIX] SOURCE LANG" + exit "$1" +} -KEEP_OLD=false -if [ "$1" = --keep-old ]; then - KEEP_OLD=: - shift -fi +die_getopt () { + echo "getopt failed" >&2 + exit 1 +} +APPLY=false +KEEP_OLD=false PREFIX= -if [ "$1" = --prefix ]; then - PREFIX="$2-" - shift 2 -fi +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 diff --git a/rosetta-merge-all b/rosetta-merge-all index a0d0a8a..6740bbc 100755 --- a/rosetta-merge-all +++ b/rosetta-merge-all @@ -1,5 +1,47 @@ #! /bin/sh -if [ "$1" = --apply ]; then + +APPLY=false + +usage () { + [ "$1" = 0 ] || exec >&2 + echo "Usage: $0 [--apply] [--keep-old] [--prefix PREFIX] SOURCE" + exit "$1" +} + +die_getopt () { + echo "getopt failed" >&2 + exit 1 +} + +parse_opts () { + eval set -- "$(getopt -o '' -l apply,keep-old,prefix:,help -- "$@")" + while :; do + case $1 in + --apply) + APPLY=: + shift + ;; + --keep-old) + shift + ;; + --prefix) + shift 2 + ;; + --help) + usage 0 + shift + ;; + --) shift; break ;; + *) die_getopt ;; + esac + done +} + +[ "$1" ] || usage 1 + +parse_opts "$@" + +if $APPLY; then for x in *.po; do rosetta-merge "$@" ${x%.*}; done else for x in *.po; do rosetta-merge "$@" ${x%.*} | view -; done