diff --git a/audio/metaflac-field2field.sh b/audio/metaflac-field2field.sh index 4b3af05..53a4a63 100755 --- a/audio/metaflac-field2field.sh +++ b/audio/metaflac-field2field.sh @@ -18,41 +18,45 @@ #set -x -print_usage() -{ - echo "Usage:" - echo " $0 [ [...] ]" - echo " : copy | move | rmcopy | mvcopy" - echo " copy: each occurrence of SRC_FIELD is duplicated to create an occurrence of" - echo " DST_FIELD; all the existing occurrences of SRC_FIELD and DST_FIELD are" - echo " kept." - echo " move: each occurrence of SRC_FIELD is renamed to create an occurrence of" - echo " DST_FIELD; the existing occurrences of DST_FIELD are kept." - echo " rmcopy: the existing occurrences of DST_FIELD are deleted, then each" - echo " occurrence of SRC_FIELD is duplicated to create an occurrence" - echo " of DST_FIELD; the occurrences of SRC_FIELD are kept." - echo " rmmove: the existing occurrences of DST_FIELD are deleted, then each" - echo " occurrence of SRC_FIELD is renamed to create an occurrence of" - echo " DST_FIELD." - exit 1 -} +USAGE=$(cat < [ [...] ] + + : copy | move | rmcopy | mvcopy + copy: each occurrence of SRC_FIELD is duplicated to create an occurrence of + DST_FIELD; all the existing occurrences of SRC_FIELD and DST_FIELD are + kept. + move: each occurrence of SRC_FIELD is renamed to create an occurrence of + DST_FIELD; the existing occurrences of DST_FIELD are kept. + rmcopy: the existing occurrences of DST_FIELD are deleted, then each + occurrence of SRC_FIELD is duplicated to create an occurrence + of DST_FIELD; the occurrences of SRC_FIELD are kept. + rmmove: the existing occurrences of DST_FIELD are deleted, then each + occurrence of SRC_FIELD is renamed to create an occurrence of + DST_FIELD. +EOF +) # Right number of arguments? if [ $# -lt 4 ] ; then - echo "Wrong number of arguments!" + echo "Wrong number of arguments!" >&2 print_usage fi -ACTION=$1 +ACTION="$1" shift # Known action type? -case $ACTION in +case "$ACTION" in copy) ;; move) ;; rmcopy) ;; rmmove) ;; - *) echo "Action unknown \"$ACTION\"!" ; print_usage ;; + *) + printf 'Action unknown "%s"!\n\n' "$ACTION" >&2 + printf '%s\n' "$USAGE" >&2 + exit 1 + ;; esac SRC_FIELD=$1 @@ -60,28 +64,28 @@ shift DST_FIELD=$1 shift -echo "Source field: $SRC_FIELD" -echo "Destination field: $DST_FIELD" -echo "Action: $ACTION" +printf 'Source field: %s\n' "$SRC_FIELD" +printf 'Destination field: %s\n' "$DST_FIELD" +printf 'Action: %s\n' "$ACTION" echo "Processing files..." -if echo $ACTION | egrep '^rm' >/dev/null ; then - echo "Deleting field $DST_FIELD on each file..." - metaflac --remove-tag=$DST_FIELD "$@" +if echo "$ACTION" | grep '^rm' >/dev/null ; then + printf 'Deleting field "%s" on each file...\n' "$DST_FIELD" + metaflac --remove-tag="$DST_FIELD" "$@" fi for file in "$@" ; do - echo "Setting field \"$DST_FIELD\" on file: $file" - metaflac --show-tag=$SRC_FIELD "$file" | sed 's/^[A-Z]\+=//' | while read c1 ; do - echo "Adding $DST_FIELD=$c1..." - metaflac --set-tag=$DST_FIELD="$c1" "$file" + printf 'Setting field "%s" on file: "%s"\n' "$DST_FIELD" "$file" + metaflac --show-tag="$SRC_FIELD" "$file" | sed 's/^[A-Z]\+=//' | while read -r c1 ; do + printf 'Adding "%s"...\n' "$DST_FIELD=$c1" + metaflac --set-tag="$DST_FIELD"="$c1" "$file" done done -if echo $ACTION | egrep 'move$' >/dev/null ; then - echo "Deleting $SRC_FIELD on each file..." - metaflac --remove-tag=$SRC_FIELD "$@" +if echo "$ACTION" | grep 'move$' >/dev/null ; then + printf 'Deleting "%s" on each file...\n' "$SRC_FIELD" + metaflac --remove-tag="$SRC_FIELD" "$@" fi # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4