mirror of
https://github.com/systemd/systemd.git
synced 2026-11-06 13:27:45 +00:00
84 lines
2.2 KiB
Bash
84 lines
2.2 KiB
Bash
# shellcheck shell=bash
|
|
# systemd-notify(1) completion -*- shell-script -*-
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
_systemd_notify() {
|
|
local cur prev words cword split
|
|
local i mode=notify do_exec=false after_separator=false parse_options=true
|
|
local OPTS='-h --help --version --ready --reloading --stopping --pid= --uid= --status=
|
|
--booted --no-block --exec --fd= --fdname= --fdstore-wipe= --fork -q --quiet'
|
|
|
|
_init_completion -s || return
|
|
|
|
for ((i=1; i <= cword; i++)); do
|
|
if $parse_options; then
|
|
case ${words[i]} in
|
|
--)
|
|
((i < cword)) && parse_options=false
|
|
continue
|
|
;;
|
|
--uid|--status|--fd|--fdname|--fdstore-wipe)
|
|
((i++))
|
|
continue
|
|
;;
|
|
--fork|--booted)
|
|
mode=${words[i]#--}
|
|
continue
|
|
;;
|
|
--exec)
|
|
do_exec=true
|
|
continue
|
|
;;
|
|
-*)
|
|
continue
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if [[ $mode == fork ]] || $after_separator; then
|
|
_comp_command_offset "$i"
|
|
return
|
|
fi
|
|
|
|
if $do_exec; then
|
|
case ${words[i]} in
|
|
';'|'\;'|'";"'|"';'")
|
|
after_separator=true
|
|
;;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
$parse_options || return
|
|
|
|
case $prev in
|
|
--pid)
|
|
# Optional arguments must be joined to the option with '='.
|
|
if $split; then
|
|
_pids
|
|
_comp_compgen -a -- -W 'auto parent self'
|
|
return
|
|
fi
|
|
;;
|
|
--uid)
|
|
_comp_compgen -- -u
|
|
return
|
|
;;
|
|
--status|--fd|--fdname|--fdstore-wipe)
|
|
return
|
|
;;
|
|
esac
|
|
|
|
if $split || [[ -n $cur && $cur != -* ]]; then
|
|
return
|
|
fi
|
|
|
|
_comp_compgen -- -W "$OPTS"
|
|
if [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]]; then
|
|
compopt -o nospace
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
complete -F _systemd_notify systemd-notify
|