initial checkin: still somewhat sketchy
[distorted-keys] / keys.in
1 #! /bin/sh
2 ###
3 ### Front-end dispatch for key-management scripts
4 ###
5 ### (c) 2011 Mark Wooding
6 ###
7
8 ###----- Licensing notice ---------------------------------------------------
9 ###
10 ### This program is free software; you can redistribute it and/or modify
11 ### it under the terms of the GNU General Public License as published by
12 ### the Free Software Foundation; either version 2 of the License, or
13 ### (at your option) any later version.
14 ###
15 ### This program is distributed in the hope that it will be useful,
16 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ### GNU General Public License for more details.
19 ###
20 ### You should have received a copy of the GNU General Public License
21 ### along with this program; if not, write to the Free Software Foundation,
22 ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
24 set -e
25
26 quis=${0##*/}
27 PACKAGE=@PACKAGE@
28 VERSION=@VERSION@
29
30 : ${KEYS=@pkgconfdir@}
31 : ${KEYSLIB=@pkglibdir@}
32 export KEYS KEYSLIB
33
34 ###--------------------------------------------------------------------------
35 ### Help.
36
37 usage="usage: $quis COMMAND [ARGUMENTS ...]"
38
39 version () {
40 echo "$PACKAGE version $VERSION"
41 }
42
43 help () {
44 rc=0
45 version
46 case $# in
47 0)
48 cat <<EOF
49
50 $usage
51
52 Options:
53 -h Show this help text.
54 -v Show the program version number.
55
56 Commands installed:
57 EOF
58 cd "$KEYSLIB"
59 for i in *; do
60 case "$i" in *.*) continue ;; esac
61 if [ ! -x "$i" ]; then continue; fi
62 sed -n "/<<HELP/{n;s/^/ $i /;p;q;}" "$i"
63 done
64 ;;
65 *)
66 for i in "$@"; do
67 echo
68 if [ ! -x "$KEYSLIB"/"$i" ]; then
69 echo >&2 "$quis: unrecognized command \`$i'"
70 rc=1
71 continue
72 elif ! KEYS_HELP=t "$KEYSLIB"/"$i"; then
73 rc=1
74 fi
75 done
76 ;;
77 esac
78 return $rc
79 }
80
81 ###--------------------------------------------------------------------------
82 ### Command dispatch.
83
84 while getopts "hv" opt; do
85 case "$opt" in
86 h) help; exit ;;
87 v) version; exit ;;
88 *) echo >&2 "$usage"; exit 1 ;;
89 esac
90 done
91 shift $((OPTIND - 1))
92
93 case $# in 0) echo >&2 "$usage"; exit 1 ;; esac
94 cmd=$1; shift
95 case "$cmd" in help) help "$@"; exit ;; esac
96 if [ ! -x "$KEYSLIB"/"$cmd" ]; then
97 echo >&2 "$quis: unrecognized command \`$cmd'"
98 exit 1
99 fi
100
101 unset KEYS_HELP
102 exec "$KEYSLIB"/"$cmd" "$@"
103
104 ###----- That's all, folks --------------------------------------------------