Subversion Repositories HelenOS

Rev

Rev 3448 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3448 Rev 4341
Line 44... Line 44...
44
  -d, --desc         Short (20 30 chars) description of the command
44
  -d, --desc         Short (20 30 chars) description of the command
45
                     (def: "The $def command")
45
                     (def: "The $def command")
46
  -e, --entry        Entry function of the command (def: cmd_${def})
46
  -e, --entry        Entry function of the command (def: cmd_${def})
47
  -h, --help-entry   Entry function for command help (def: help_cmd_${def})
47
  -h, --help-entry   Entry function for command help (def: help_cmd_${def})
48
  -a, --alias        Alias (nickname) for this command (def: none)
48
  -a, --alias        Alias (nickname) for this command (def: none)
49
  -r, --restrict     Restriction level (interactive, non-interactive, both)
-
 
50
                     (def: module is both, builtin is interactive only)
-
 
51
  -t, --type         Type of command (module or builtin) (def: module)
49
  -t, --type         Type of command (module or builtin) (def: module)
52
  -H, --help         This help summary
50
  -H, --help         This help summary
53
  -V, --version      Print $PROGNAME version and exit normally
51
  -V, --version      Print $PROGNAME version and exit normally
54
 
52
 
55
Notes:
53
Notes:
Line 65... Line 63...
65
 
63
 
66
  This script is intended only to be a convenience for developers. Example use:
64
  This script is intended only to be a convenience for developers. Example use:
67
    $PROGNAME -n foo -d "Foo power" -a bar -r both -t module modules/foo
65
    $PROGNAME -n foo -d "Foo power" -a bar -r both -t module modules/foo
68
 
66
 
69
  The example would generate a modular command named 'foo', which is also
67
  The example would generate a modular command named 'foo', which is also
70
  reached by typing 'bar' and available in either interactive or noninteractive
68
  reached by typing 'bar'.
71
  mode.
-
 
72
 
69
 
73
  Skeletal files do *not* depend on the autoconf generated "config.h" unless you
70
  Skeletal files do *not* depend on the autoconf generated "config.h" unless you
74
  include it. This may or may not be desirable depending on your use.
71
  include it. This may or may not be desirable depending on your use.
75
 
72
 
76
Report bugs to $PROGMAINT
73
Report bugs to $PROGMAINT
Line 95... Line 92...
95
{
92
{
96
	"${CMDNAME}",
93
	"${CMDNAME}",
97
	"${CMDDESC}",
94
	"${CMDDESC}",
98
	&${CMDENTRY},
95
	&${CMDENTRY},
99
	&${HELPENTRY},
96
	&${HELPENTRY},
100
	${CMDRESTRICT}
-
 
101
},
97
},
102
 
98
 
103
EOF
99
EOF
104
	[ -n "${CMDALIAS}" ] && cat << EOF >> ${OUTDIR}/${CMDNAME}_def.h
100
	[ -n "${CMDALIAS}" ] && cat << EOF >> ${OUTDIR}/${CMDNAME}_def.h
105
{
101
{
106
	"${CMDALIAS}",
102
	"${CMDALIAS}",
107
	NULL,
103
	NULL,
108
	&${CMDENTRY},
104
	&${CMDENTRY},
109
	&${HELPENTRY},
105
	&${HELPENTRY},
110
	${CMDRESTRICT}
-
 
111
},
106
},
112
 
107
 
113
EOF
108
EOF
114
	local defname=$(toupper "${CMDNAME}")
109
	local defname=$(toupper "${CMDNAME}")
115
	echo "Creating ${OUTDIR}/entry.h ..."
110
	echo "Creating ${OUTDIR}/entry.h ..."
Line 165... Line 160...
165
#include "errors.h"
160
#include "errors.h"
166
#include "entry.h"
161
#include "entry.h"
167
#include "${CMDNAME}.h"
162
#include "${CMDNAME}.h"
168
#include "cmds.h"
163
#include "cmds.h"
169
 
164
 
170
static char *cmdname = "${CMDNAME}";
165
static const char *cmdname = "${CMDNAME}";
171
 
166
 
172
/* Dispays help for ${CMDNAME} in various levels */
167
/* Dispays help for ${CMDNAME} in various levels */
173
void ${HELPENTRY}(unsigned int level)
168
void ${HELPENTRY}(unsigned int level)
174
{
169
{
175
	printf("This is the %s help for '%s'.\n",
170
	printf("This is the %s help for '%s'.\n",
Line 232... Line 227...
232
DEFAULT_COMMAND="cmdname"
227
DEFAULT_COMMAND="cmdname"
233
 
228
 
234
# We need at least one
229
# We need at least one
235
[ $# = 0 ] && usage && exit 1;
230
[ $# = 0 ] && usage && exit 1;
236
 
231
 
237
TEMP=$(getopt -o n:d:e:h:a:r:t:HV \
232
TEMP=$(getopt -o n:d:e:h:a:t:HV \
238
--long name:,desc:,entry:,help-entry:,alias:,restrict:,type:,help,version \
233
--long name:,desc:,entry:,help-entry:,alias:,type:,help,version \
239
-- "$@") || {
234
-- "$@") || {
240
	echo "Try $PROGNAME --help for help"
235
	echo "Try $PROGNAME --help for help"
241
}
236
}
242
 
237
 
243
eval set -- "$TEMP"
238
eval set -- "$TEMP"
Line 267... Line 262...
267
	-a | --alias)
262
	-a | --alias)
268
		CMDALIAS="$2"
263
		CMDALIAS="$2"
269
		shift 2
264
		shift 2
270
		continue
265
		continue
271
	;;
266
	;;
272
	-r | --restrict)
-
 
273
		CMDRESTRICT="$2"
-
 
274
		shift 2
-
 
275
		continue
-
 
276
	;;
-
 
277
	-t | --type)
267
	-t | --type)
278
		CMDTYPE="$2"
268
		CMDTYPE="$2"
279
		shift 2
269
		shift 2
280
		continue
270
		continue
281
	;;
271
	;;
Line 303... Line 293...
303
[ -n "$CMDENTRY" ] || CMDENTRY="cmd_${CMDNAME}"
293
[ -n "$CMDENTRY" ] || CMDENTRY="cmd_${CMDNAME}"
304
[ -n "$HELPENTRY" ] || HELPENTRY="help_cmd_${CMDNAME}"
294
[ -n "$HELPENTRY" ] || HELPENTRY="help_cmd_${CMDNAME}"
305
[ -n "$CMDTYPE" ] || CMDTYPE="module"
295
[ -n "$CMDTYPE" ] || CMDTYPE="module"
306
[ -n "$OUTDIR" ] || OUTDIR="${CMDTYPE}s/${CMDNAME}"
296
[ -n "$OUTDIR" ] || OUTDIR="${CMDTYPE}s/${CMDNAME}"
307
 
297
 
308
# Builtins typically only need to be available in interactive mode,
-
 
309
# set the default accordingly.
-
 
310
[ -n "$CMDRESTRICT" ] || {
-
 
311
	[ "$CMDTYPE" = "module" ] && CMDRESTRICT="both"
-
 
312
	[ "$CMDTYPE" = "builtin" ] && CMDRESTRICT="interactive"
-
 
313
}
-
 
314
 
-
 
315
# Set the restriction level as the structure expects to see it
-
 
316
case "$CMDRESTRICT" in
-
 
317
	0 | both)
-
 
318
		CMDRESTRICT="0"
-
 
319
	;;
-
 
320
	1 | non-interactive)
-
 
321
		CMDRESTRICT="1"
-
 
322
	;;
-
 
323
	-1 | interactive)
-
 
324
		CMDRESTRICT="-1"
-
 
325
	;;
-
 
326
	*)
-
 
327
		usage
-
 
328
		exit 1
-
 
329
	;;
-
 
330
esac
-
 
331
 
298
 
332
# Do a little sanity
299
# Do a little sanity
333
[ -d $OUTDIR ] && {
300
[ -d $OUTDIR ] && {
334
	echo "$OUTDIR already exists, remove it to proceed."
301
	echo "$OUTDIR already exists, remove it to proceed."
335
	exit 1
302
	exit 1