Files
systemd/shell-completion/bash/systemd-notify
T

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