]> git.draconx.ca Git - mpdhacks.git/commitdiff
mpdthumb: Add --help and --version options.
authorNick Bowler <nbowler@draconx.ca>
Fri, 19 Jun 2020 05:04:24 +0000 (01:04 -0400)
committerNick Bowler <nbowler@draconx.ca>
Fri, 19 Jun 2020 05:04:24 +0000 (01:04 -0400)
mpdthumb.sh

index 30f30a16ff6440a8248bb7922d15fd6ebdc971fe..f41c5f6f18cf95b19d85e8608d1c6b94d5b55553 100755 (executable)
 : "${THUMBNAILDIR=$XDG_CACHE_HOME/mpdthumb}"
 
 # Try to find mpdexec...
-case $0 in
-/*) self=$0 ;;
-*/*) self=$PWD/${0#./} ;;
-*) self=`command -v $0` ;;
+argv0=$0
+case $argv0 in
+/*) self=$argv0 ;;
+*/*) self=$PWD/${argv0#./} ;;
+*) self=`command -v $argv0` ;;
 esac
 owndir=${self%/*}
 
@@ -33,8 +34,49 @@ else
   : "${CONVERT=convert}"
 fi
 
-size=x128
+print_version () {
+  cat <<'EOF'
+mpdthumb.sh 0.8
+Copyright © 2020 Nick Bowler
+License GPLv3+: GNU General Public License version 3 or any later version.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+}
+
+print_usage () {
+  test $# -eq 0 || { printf '%s: ' "$argv0"; printf "$@"; }
+  printf 'Usage: %s [options] file [file ...]\n' "$argv0"
+  test $# -eq 0 || printf 'Try %s --help for more information.\n' "$argv0"
+}
+
+print_help () {
+  print_usage
+  cat <<EOF
+This is "mpdthumb": a tool to retrieve cover art thumbnails from MPD.
+
+One or more filenames may be specified.  The cover art (if any) for each
+file is retrieved and scaled to the requested size.  The thumbnails are
+cached locally so that subsequent lookups return results very quickly.
+
+The filenames of the generated thumbnails are printed one per line in
+the same order of the associated files specified on the command line.
+If a given file has no cover art, then a blank line is printed.
+
+Options:
+  --size=[W][xH]   Specify the dimensions (in pixels) of a bounding rectangle
+                   into which the image will be scaled to fit.  One (but not
+                   both) of the dimensions may be omitted to indicate no limit
+                   in that direction.  The default size is x128.
+  --small          Equivalent to --size=56
+  --version        Print a version message and then exit.
+  --help           Print this message and then exit.
+
+Report bugs to <nbowler@draconx.ca>.
+EOF
+}
 
+size=x128
 lastarg=
 dashdash=
 for arg; do
@@ -47,8 +89,10 @@ for arg; do
   --size=*) size=${arg#--size=} ;;
   --small) size=56 ;;
   --size) lastarg=$arg ;;
+  --version) print_version; exit ;;
+  --help) print_help; exit ;;
   --) dashdash=: ;;
-  -*) printf '%s: unrecognized argument: %s\n' "$0" "$arg" 1>&2; exit 1 ;;
+  -*) print_usage 'unrecognized argument: %s\n' "$arg" 1>&2; exit 1 ;;
   *) set x "$@" "$arg"; shift
   esac
 
@@ -57,12 +101,12 @@ done
 
 w=${size%x*} h=${size#*x}
 if expr "$w$h" : '[0-9][0-9]*$' >/dev/null; then :; else
-  printf '%s: invalid --size setting: %s\n' "$0" "$size" 1>&2
+  print_usage 'invalid --size setting: %s\n' "$size" 1>&2
   exit 1
 fi
 
 case $# in 0)
-  printf 'usage: %s [options] file [file ...]\n' "$0" 1>&2
+  print_usage 'at least one filename is required\n' 1>&2
   exit 1
 esac