chiark / gitweb /
initial checkin: still somewhat sketchy
[distorted-keys] / keys.in
CommitLineData
53263601
MW
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
24set -e
25
26quis=${0##*/}
27PACKAGE=@PACKAGE@
28VERSION=@VERSION@
29
30: ${KEYS=@pkgconfdir@}
31: ${KEYSLIB=@pkglibdir@}
32export KEYS KEYSLIB
33
34###--------------------------------------------------------------------------
35### Help.
36
37usage="usage: $quis COMMAND [ARGUMENTS ...]"
38
39version () {
40 echo "$PACKAGE version $VERSION"
41}
42
43help () {
44 rc=0
45 version
46 case $# in
47 0)
48 cat <<EOF
49
50$usage
51
52Options:
53 -h Show this help text.
54 -v Show the program version number.
55
56Commands installed:
57EOF
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
84while getopts "hv" opt; do
85 case "$opt" in
86 h) help; exit ;;
87 v) version; exit ;;
88 *) echo >&2 "$usage"; exit 1 ;;
89 esac
90done
91shift $((OPTIND - 1))
92
93case $# in 0) echo >&2 "$usage"; exit 1 ;; esac
94cmd=$1; shift
95case "$cmd" in help) help "$@"; exit ;; esac
96if [ ! -x "$KEYSLIB"/"$cmd" ]; then
97 echo >&2 "$quis: unrecognized command \`$cmd'"
98 exit 1
99fi
100
101unset KEYS_HELP
102exec "$KEYSLIB"/"$cmd" "$@"
103
104###----- That's all, folks --------------------------------------------------