chiark / gitweb /
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 --------------------------------------------------