- Add two new subcommands to rc.subr:

"describe" shows an rc script's description
  "extracommands" shows an rc script's non-standard commands like "reload", "configtest", "keygen", etc
- Update the rc(8) manpage and the tcsh(1) completion examples to reflect these changes

Approved by:	bapt
Sponsored by:	Essen Linuxhotel Hackathon 2016
Differential Revision:	D452
This commit is contained in:
Lars Engels 2016-04-23 16:19:34 +00:00
parent 6c1a5e837d
commit 1980d11b5f
3 changed files with 23 additions and 4 deletions

View File

@ -844,6 +844,10 @@ check_startmsgs()
#
# enabled Return true if the service is enabled.
#
# describe Show the service's description
#
# extracommands Show the service's extra commands
#
# Variables available to methods, and after run_rc_command() has
# completed:
#
@ -912,7 +916,7 @@ run_rc_command()
eval _override_command=\$${name}_program
command=${_override_command:-$command}
_keywords="start stop restart rcvar enabled $extra_commands"
_keywords="start stop restart rcvar enabled describe extracommands $extra_commands"
rc_pid=
_pidcmd=
_procname=${procname:-${command}}
@ -962,12 +966,13 @@ run_rc_command()
if [ "$_elem" != "$rc_arg" ]; then
continue
fi
# if ${rcvar} is set, $1 is not "rcvar"
# if ${rcvar} is set, $1 is not "rcvar" and not "describe"
# and ${rc_pid} is not set, then run
# checkyesno ${rcvar}
# and return if that failed
#
if [ -n "${rcvar}" -a "$rc_arg" != "rcvar" -a "$rc_arg" != "stop" ] ||
if [ -n "${rcvar}" -a "$rc_arg" != "rcvar" -a "$rc_arg" != "stop" \
-a "$rc_arg" != "describe" ] ||
[ -n "${rcvar}" -a "$rc_arg" = "stop" -a -z "${rc_pid}" ]; then
if ! checkyesno ${rcvar}; then
if [ -n "${rc_quiet}" ]; then
@ -1004,6 +1009,16 @@ run_rc_command()
case "$rc_arg" in # default operations...
describe)
if [ -n "$desc" ]; then
echo "$desc"
fi
;;
extracommands)
echo "$extra_commands"
;;
status)
_run_rc_precmd || return 1
if [ -n "$rc_pid" ]; then

View File

@ -98,7 +98,7 @@ complete rsync "c,*:/,F:/," \
complete scp "c,*:/,F:/," \
"c,*:,F:$HOME," \
'c/*@/$hosts/:/'
complete service 'c/-/(e l r v)/' 'p/1/`service -l`/' 'n/*/(start stop reload restart status rcvar onestart onestop)/'
complete service 'c/-/(e l r v)/' 'p/1/`service -l`/' 'n/*/(start stop reload restart status rcvar describe extracommands onestart onestop oneextracommands)/'
complete svn 'C@file:///@`'"${HOME}/etc/tcsh/complete.d/svn"'`@@' \
'n@ls@(file:/// svn+ssh:// svn://)@@' \
'n@help@(add blame cat checkout cleanup commit copy delete export help import info list ls lock log merge mkdir move propdel \

View File

@ -323,6 +323,10 @@ If the script starts a process (rather than performing a one-off
operation), show the status of the process.
Otherwise it is not necessary to support this argument.
Defaults to displaying the process ID of the program (if running).
.It Cm describe
Print a short description of what the script does.
.It Cm extracommands
Print the script's non-standard commands.
.It Cm poll
If the script starts a process (rather than performing a one-off
operation), wait for the command to exit.