summaryrefslogtreecommitdiff
path: root/Completion/BSD/Command/_sysrc
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/BSD/Command/_sysrc')
-rw-r--r--Completion/BSD/Command/_sysrc53
1 files changed, 33 insertions, 20 deletions
diff --git a/Completion/BSD/Command/_sysrc b/Completion/BSD/Command/_sysrc
index d8bc4ef0e..651c18b89 100644
--- a/Completion/BSD/Command/_sysrc
+++ b/Completion/BSD/Command/_sysrc
@@ -1,39 +1,50 @@
#compdef sysrc
+
_sysrc_caching_policy() {
local -a oldp
oldp=( "$1"(Nm+1) )
(( $#oldp ))
}
-
_sysrc() {
- _arguments -A '-*' : \
+ local curcontext="$curcontext" state line ret=1
+ typeset -A opt_args
+ local -a rc_conf_vars
+
+ _arguments -C -s -A '-*' : \
+ '(-l)-e[print variables as sh(1) compatible syntax]' \
+ '-E[list only existing files]' \
+ '(-l)-q[quiet mode]' \
+ '(-L)-s+[process additional rc.conf.d entries for specified service name]:service name:_services' \
+ '(-L)*-f+[operate on specified file(s), not \`rc_conf_files'\'']: : _files' \
+ '(-l)-v[verbose mode]' \
+ '*:configuration variable:->confvars' \
+ - set \
+ '(-A)-a[list all non-default configuration variables]' \
+ '(-a)-A[list all configuration variables]' \
'-c[check only, return success if vars are set]' \
'-d[print variable(s) description]' \
'-D[print default value(s) only]' \
- '-e[print variables as sh(1) compatible syntax]' \
- '*-f[operate on specified file(s), not \`rc_conf_files'\'']: : _files' \
'-F[print only the last rc.conf(5) file each directive is in]' \
- '-h[print short usage message]' \
- '--help[print full usage message]' \
+ '(- *)-h[print short usage message]' \
+ '(- *)--help[print full usage message]' \
'-i[ignore unknown variables]' \
- '-j[jail to operate within]:jails:_jails' \
+ '-j+[jail to operate within]:jails:_jails' \
'-n[print only variable values]' \
'-N[print only variable names]' \
- '-q[quiet mode]' \
- '-R[specify an alternative root]:alternative root:_files -/' \
- '-v[verbose mode]' \
- '--version[print version information]' \
+ '-R+[specify an alternative root]:alternative root:_files -/' \
+ '(- *)--version[print version information]' \
'-x[remove specified variables from specified file(s)]' \
- '*:configuration variable:->confvars' \
- - set1 \
- '-a[list all non-default configuration variables]' \
- - set2 \
- '-A[list all configuration variables]'
+ - lists \
+ '(-e -q -v)-l[list config files used at startup]' \
+ - lista \
+ '(-s -f)-L[list all configuration files including rc.conf.d entries]' && ret=0
if [[ $state == confvars ]]; then
- local k v opt curcontext="${curcontext%:*}:values"; local -a rc_conf_vars
- if [[ -prefix *=* ]]; then
+ local k v opt
+ if (( $+opt_args[lista--L] )); then
+ _services && ret=0
+ elif [[ -prefix *=* ]]; then
# do you really want to go down this hole?
_message -e values value
else
@@ -65,13 +76,15 @@ _sysrc() {
if (( $#rc_conf_vars )); then
if [[ $opt == N ]]; then
- _values -w -C variable ${^rc_conf_vars%%\[*}'::value'
+ _values -w -C variable ${^rc_conf_vars%%\[*}'::value' && ret=0
else
- _values -w -C variable ${^rc_conf_vars}'::value'
+ _values -w -C variable ${^rc_conf_vars}'::value' && ret=0
fi
fi
fi
fi
+
+ return ret
}
_sysrc "$@"