diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-04-05 11:39:14 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-04-12 08:34:44 +0200 |
commit | 843cfcb15c1f55c37cc1baae3e12210287c1f5c6 (patch) | |
tree | 8435abc7e3d2f26a04fbc98336bf971aa2d4f9aa /shell-completion | |
parent | cc5549ca12616376a4e4ef04fd4e2fb53d6d098c (diff) | |
download | systemd-843cfcb15c1f55c37cc1baae3e12210287c1f5c6.tar.gz systemd-843cfcb15c1f55c37cc1baae3e12210287c1f5c6.tar.bz2 systemd-843cfcb15c1f55c37cc1baae3e12210287c1f5c6.zip |
shell-completion: use 4 space indentation too
The same as in other places, indentation levels were all over the place.
Diffstat (limited to 'shell-completion')
39 files changed, 2480 insertions, 2486 deletions
diff --git a/shell-completion/bash/bootctl b/shell-completion/bash/bootctl index 64bff4f879..7e568dc3bd 100644 --- a/shell-completion/bash/bootctl +++ b/shell-completion/bash/bootctl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,79 +17,79 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_entry_ids() { - bootctl --no-pager list 2>/dev/null | { while read -r a b; do [[ $a == 'id:' ]] && echo " $b"; done } + bootctl --no-pager list 2>/dev/null | { while read -r a b; do [[ $a == 'id:' ]] && echo " $b"; done } } _bootctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --no-variables -p --print-path --version --no-pager' - [ARG]='--path' - ) + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --no-variables -p --print-path --version --no-pager' + [ARG]='--path' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --path) - if [[ -z $cur ]]; then - comps=$(compgen -A directory -- "/" ) - else - comps=$(compgen -A directory -- "$cur" ) - fi - compopt -o filenames - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --path) + if [[ -z $cur ]]; then + comps=$(compgen -A directory -- "/" ) + else + comps=$(compgen -A directory -- "$cur" ) + fi + compopt -o filenames + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - local -A VERBS=( - [STANDALONE]='help install list remove status update' - [BOOTENTRY]='set-default set-oneshot' - ) + local -A VERBS=( + [STANDALONE]='help install list remove status update' + [BOOTENTRY]='set-default set-oneshot' + ) - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[BOOTENTRY]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if ! __contains_word "${COMP_WORDS[i]}" ${OPTS[*]} ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[BOOTENTRY]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if ! __contains_word "${COMP_WORDS[i]}" ${OPTS[*]} ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done - if [[ -z $name ]]; then - comps=$( __get_entry_ids ) - else - comps='' - fi + if [[ -z $name ]]; then + comps=$( __get_entry_ids ) + else + comps='' fi + fi - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _bootctl bootctl diff --git a/shell-completion/bash/busctl b/shell-completion/bash/busctl index 63a7644cbf..3be0600b9b 100644 --- a/shell-completion/bash/busctl +++ b/shell-completion/bash/busctl @@ -17,191 +17,191 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } __get_busnames() { - local mode=$1 - local a b - busctl $mode list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local mode=$1 + local a b + busctl $mode list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } __get_objects() { - local mode=$1 - local busname=$2 - local a b - busctl $mode tree --list --no-legend --no-pager $busname 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local mode=$1 + local busname=$2 + local a b + busctl $mode tree --list --no-legend --no-pager $busname 2>/dev/null | + { while read a b; do echo " $a"; done; }; } __get_interfaces() { - local mode=$1 - local busname=$2 - local path=$3 - local a b c - busctl $mode introspect --list --no-legend --no-pager $busname $path 2>/dev/null | - { while read a b c; do [[ "$b" == "interface" ]] && echo " $a"; done; }; + local mode=$1 + local busname=$2 + local path=$3 + local a b c + busctl $mode introspect --list --no-legend --no-pager $busname $path 2>/dev/null | + { while read a b c; do [[ "$b" == "interface" ]] && echo " $a"; done; }; } __get_members() { - local mode=$1 - local busname=$2 - local path=$3 - local interface=$4 - local type=$5 - local flags=$6 - local a b c d e - busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | - sed -e 's/^\.//' | - { while read a b c d e; do [[ "$b" == "$type" && ( -z $flags || "$e" == "$flags" ) ]] && echo " $a"; done; }; + local mode=$1 + local busname=$2 + local path=$3 + local interface=$4 + local type=$5 + local flags=$6 + local a b c d e + busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | + sed -e 's/^\.//' | + { while read a b c d e; do [[ "$b" == "$type" && ( -z $flags || "$e" == "$flags" ) ]] && echo " $a"; done; }; } __get_signature() { - local mode=$1 - local busname=$2 - local path=$3 - local interface=$4 - local member=$5 - local a b c d - busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | - sed -e 's/^\.//' | { while read a b c d; do [[ "$a" == "$member" && "$c" != '-' ]] && echo " \"$c\""; done; }; + local mode=$1 + local busname=$2 + local path=$3 + local interface=$4 + local member=$5 + local a b c d + busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | + sed -e 's/^\.//' | { while read a b c d; do [[ "$a" == "$member" && "$c" != '-' ]] && echo " \"$c\""; done; }; } _busctl() { - local i n verb comps mode - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --no-pager --no-legend --system --user - --show-machine --unique --acquired --activatable --list - -q --quiet --verbose --expect-reply=no --auto-start=no - --allow-interactive-authorization=no --augment-creds=no - --watch-bind=yes -j' - [ARG]='--address -H --host -M --machine --match --timeout --size --json - --destination' - ) - - if __contains_word "--user" ${COMP_WORDS[*]}; then - mode=--user + local i n verb comps mode + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version --no-pager --no-legend --system --user + --show-machine --unique --acquired --activatable --list + -q --quiet --verbose --expect-reply=no --auto-start=no + --allow-interactive-authorization=no --augment-creds=no + --watch-bind=yes -j' + [ARG]='--address -H --host -M --machine --match --timeout --size --json + --destination' + ) + + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + else + mode=--system + fi + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --json) + comps=$( busctl --json=help 2>/dev/null ) + ;; + --destination) + comps=$( __get_busnames $mode ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [STANDALONE]='list help' + [BUSNAME]='status monitor capture tree' + [OBJECT]='introspect' + [METHOD]='call' + [EMIT]='emit' + [PROPERTY_GET]='get-property' + [PROPERTY_SET]='set-property' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + n=$(($COMP_CWORD - $i)) + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[BUSNAME]}; then + comps=$( __get_busnames $mode) + elif __contains_word "$verb" ${VERBS[OBJECT]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) else - mode=--system + comps='' fi - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --json) - comps=$( busctl --json=help 2>/dev/null ) - ;; - --destination) - comps=$( __get_busnames $mode ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + elif __contains_word "$verb" ${VERBS[METHOD]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 4 ]] ; then + comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} method) + elif [[ $n -eq 5 ]] ; then + comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + else + comps='' fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 + elif __contains_word "$verb" ${VERBS[EMIT]}; then + comps='' + elif __contains_word "$verb" ${VERBS[PROPERTY_GET]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 4 ]] ; then + comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property) + else + comps='' fi - - local -A VERBS=( - [STANDALONE]='list help' - [BUSNAME]='status monitor capture tree' - [OBJECT]='introspect' - [METHOD]='call' - [EMIT]='emit' - [PROPERTY_GET]='get-property' - [PROPERTY_SET]='set-property' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - n=$(($COMP_CWORD - $i)) - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[BUSNAME]}; then - comps=$( __get_busnames $mode) - elif __contains_word "$verb" ${VERBS[OBJECT]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[METHOD]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 4 ]] ; then - comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} method) - elif [[ $n -eq 5 ]] ; then - comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[EMIT]}; then - comps='' - elif __contains_word "$verb" ${VERBS[PROPERTY_GET]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 4 ]] ; then - comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property) - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[PROPERTY_SET]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 4 ]] ; then - comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property writable) - elif [[ $n -eq 5 ]] ; then - comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - else - comps='' - fi + elif __contains_word "$verb" ${VERBS[PROPERTY_SET]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 4 ]] ; then + comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property writable) + elif [[ $n -eq 5 ]] ; then + comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + else + comps='' fi + fi - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _busctl busctl diff --git a/shell-completion/bash/coredumpctl b/shell-completion/bash/coredumpctl index f73fd272f5..d4366df0d0 100644 --- a/shell-completion/bash/coredumpctl +++ b/shell-completion/bash/coredumpctl @@ -19,10 +19,10 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} @@ -36,59 +36,59 @@ __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} _UDEV_{SYSNAME,DEVNODE,DEVLINK} __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) _coredumpctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1 - -r --reverse -S --since -U --until -D --directory -q --quiet --debugger' + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1 + -r --reverse -S --since -U --until -D --directory -q --quiet --debugger' - local -A VERBS=( - [LIST]='list info' - [DUMP]='dump debug' - ) + local -A VERBS=( + [LIST]='list info' + [DUMP]='dump debug' + ) - if __contains_word "$prev" '--output -o'; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '-D --directory'; then - comps=$( compgen -A directory -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '--debugger'; then - comps=$( compgen -A command -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '--field -F'; then - comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" ) - elif [[ $cur = -* ]]; then - comps=${OPTS} - elif __contains_word "$prev" ${VERBS[*]} && - ! __contains_word ${COMP_WORDS[COMP_CWORD-2]} \ - '--output -o -D --directory -F --field --debugger'; then - compopt -o nospace - COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) - return 0 - elif [[ $cur = *=* ]]; then - mapfile -t field_vals < <(coredumpctl -F "${prev%=}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) - return 0 - elif [[ $prev = '=' ]]; then - mapfile -t field_vals < <(coredumpctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) - comps=${field_vals[*]} - else - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done + if __contains_word "$prev" '--output -o'; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '-D --directory'; then + comps=$( compgen -A directory -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '--debugger'; then + comps=$( compgen -A command -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '--field -F'; then + comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" ) + elif [[ $cur = -* ]]; then + comps=${OPTS} + elif __contains_word "$prev" ${VERBS[*]} && + ! __contains_word ${COMP_WORDS[COMP_CWORD-2]} \ + '--output -o -D --directory -F --field --debugger'; then + compopt -o nospace + COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) + return 0 + elif [[ $cur = *=* ]]; then + mapfile -t field_vals < <(coredumpctl -F "${prev%=}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + return 0 + elif [[ $prev = '=' ]]; then + mapfile -t field_vals < <(coredumpctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) + comps=${field_vals[*]} + else + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[LIST]} ${VERBS[DUMP]}; then - comps='' - fi + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[LIST]} ${VERBS[DUMP]}; then + comps='' fi + fi - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _coredumpctl coredumpctl diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl index af6db81ce1..0d829e705a 100644 --- a/shell-completion/bash/hostnamectl +++ b/shell-completion/bash/hostnamectl @@ -19,47 +19,47 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _hostnamectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --transient --static --pretty - --no-ask-password -H --host -M --machine' + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --transient --static --pretty + --no-ask-password -H --host -M --machine' - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='status' - [ICONS]='set-icon-name' - [NAME]='set-hostname set-deployment set-location' - [CHASSIS]='set-chassis' - ) + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done + local -A VERBS=( + [STANDALONE]='status' + [ICONS]='set-icon-name' + [NAME]='set-hostname set-deployment set-location' + [CHASSIS]='set-chassis' + ) - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[CHASSIS]}; then - comps='desktop laptop convertible server tablet handset watch embedded vm container' - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then - comps='' + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break fi + done - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[CHASSIS]}; then + comps='desktop laptop convertible server tablet handset watch embedded vm container' + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _hostnamectl hostnamectl diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl index 3beb347e1b..52ed2e3bcb 100644 --- a/shell-completion/bash/journalctl +++ b/shell-completion/bash/journalctl @@ -19,119 +19,119 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ - { while read a b; do echo " $a"; done; } | sort -u; + local a b + (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ + { while read a b; do echo " $a"; done; } | sort -u; } __syslog_priorities=(emerg alert crit err warning notice info debug) _journalctl() { - local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-a --all --full --system --user - --disk-usage -f --follow --header - -h --help -l --local -m --merge --no-pager - --no-tail -q --quiet --setup-keys --verify - --version --list-catalog --update-catalog --list-boots - --show-cursor --dmesg -k --pager-end -e -r --reverse - --utc -x --catalog --no-full --force --dump-catalog - --flush --rotate --sync --no-hostname -N --fields' - [ARG]='-b --boot -D --directory --file -F --field -t --identifier - -M --machine -o --output -u --unit --user-unit -p --priority - --root --case-sensitive' - [ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until - --after-cursor --cursor-file --verify-key -g --grep - --vacuum-size --vacuum-time --vacuum-files --output-fields' - ) + local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-a --all --full --system --user + --disk-usage -f --follow --header + -h --help -l --local -m --merge --no-pager + --no-tail -q --quiet --setup-keys --verify + --version --list-catalog --update-catalog --list-boots + --show-cursor --dmesg -k --pager-end -e -r --reverse + --utc -x --catalog --no-full --force --dump-catalog + --flush --rotate --sync --no-hostname -N --fields' + [ARG]='-b --boot -D --directory --file -F --field -t --identifier + -M --machine -o --output -u --unit --user-unit -p --priority + --root --case-sensitive' + [ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until + --after-cursor --cursor-file --verify-key -g --grep + --vacuum-size --vacuum-time --vacuum-files --output-fields' + ) - # Use the default completion for shell redirect operators - if __contains_word "$prev" '>' '>>' '&>'; then - compopt -o filenames - COMPREPLY=( $(compgen -f -- "$cur") ) - return 0; - fi + # Use the default completion for shell redirect operators + if __contains_word "$prev" '>' '>>' '&>'; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "$cur") ) + return 0; + fi - if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then - case $prev in - --boot|-b) - comps=$(journalctl -F '_BOOT_ID' 2>/dev/null) - ;; - --directory|-D|--root) - comps=$(compgen -d -- "$cur") - compopt -o filenames - ;; - --file) - comps=$(compgen -f -- "$cur") - compopt -o filenames - ;; - --output|-o) - comps=$( journalctl --output=help 2>/dev/null ) - ;; - --field|-F) - comps=$(journalctl --fields | sort 2>/dev/null) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --priority|-p) - comps=${__syslog_priorities[*]} - ;; - --unit|-u) - comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null) - ;; - --user-unit) - comps=$(journalctl -F '_SYSTEMD_USER_UNIT' 2>/dev/null) - ;; - --identifier|-t) - comps=$(journalctl -F 'SYSLOG_IDENTIFIER' 2>/dev/null) - ;; - --case-sensitive) - comps='yes no' - ;; - *) - return 0 - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then + case $prev in + --boot|-b) + comps=$(journalctl -F '_BOOT_ID' 2>/dev/null) + ;; + --directory|-D|--root) + comps=$(compgen -d -- "$cur") + compopt -o filenames + ;; + --file) + comps=$(compgen -f -- "$cur") + compopt -o filenames + ;; + --output|-o) + comps=$( journalctl --output=help 2>/dev/null ) + ;; + --field|-F) + comps=$(journalctl --fields | sort 2>/dev/null) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --priority|-p) + comps=${__syslog_priorities[*]} + ;; + --unit|-u) + comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null) + ;; + --user-unit) + comps=$(journalctl -F '_SYSTEMD_USER_UNIT' 2>/dev/null) + ;; + --identifier|-t) + comps=$(journalctl -F 'SYSLOG_IDENTIFIER' 2>/dev/null) + ;; + --case-sensitive) + comps='yes no' + ;; + *) return 0 - fi + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - elif [[ $cur = *=* ]]; then - mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) - elif [[ $cur = /dev* ]]; then - compopt -o filenames - COMPREPLY=( $(compgen -f -- "${cur}") ) - elif [[ $cur = /* ]]; then - # Append /dev/ to the list of completions, so that - # after typing /<TAB><TAB> the user sees /dev/ as one - # of the alternatives. Later on the rule above will - # take care of showing device files in /dev/. - mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) - if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then - compopt -o filenames - COMPREPLY=( $(compgen -f -- "${cur}") ) - fi - elif [[ $prev = '=' ]]; then - mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) - else - mapfile -t field_vals < <(journalctl --fields 2>/dev/null) - compopt -o nospace - COMPREPLY=( $(compgen -W '${field_vals[*]}' -S= -- "$cur") ) + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + elif [[ $cur = *=* ]]; then + mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + elif [[ $cur = /dev* ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + elif [[ $cur = /* ]]; then + # Append /dev/ to the list of completions, so that + # after typing /<TAB><TAB> the user sees /dev/ as one + # of the alternatives. Later on the rule above will + # take care of showing device files in /dev/. + mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) + if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) fi + elif [[ $prev = '=' ]]; then + mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) + else + mapfile -t field_vals < <(journalctl --fields 2>/dev/null) + compopt -o nospace + COMPREPLY=( $(compgen -W '${field_vals[*]}' -S= -- "$cur") ) + fi } complete -F _journalctl journalctl diff --git a/shell-completion/bash/kernel-install b/shell-completion/bash/kernel-install index ca8c0e20ef..224ea83eb8 100644 --- a/shell-completion/bash/kernel-install +++ b/shell-completion/bash/kernel-install @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,32 +17,32 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. _kernel_install() { - local comps - local MACHINE_ID - local cur=${COMP_WORDS[COMP_CWORD]} + local comps + local MACHINE_ID + local cur=${COMP_WORDS[COMP_CWORD]} - case $COMP_CWORD in - 1) - comps="add remove" - ;; - 2) - comps=$(cd /lib/modules; echo [0-9]*) - if [[ ${COMP_WORDS[1]} == "remove" ]] && [[ -f /etc/machine-id ]]; then - read MACHINE_ID < /etc/machine-id - if [[ $MACHINE_ID ]] && ( [[ -d /boot/$MACHINE_ID ]] || [[ -L /boot/$MACHINE_ID ]] ); then - comps=$(cd "/boot/$MACHINE_ID"; echo [0-9]*) - fi + case $COMP_CWORD in + 1) + comps="add remove" + ;; + 2) + comps=$(cd /lib/modules; echo [0-9]*) + if [[ ${COMP_WORDS[1]} == "remove" ]] && [[ -f /etc/machine-id ]]; then + read MACHINE_ID < /etc/machine-id + if [[ $MACHINE_ID ]] && ( [[ -d /boot/$MACHINE_ID ]] || [[ -L /boot/$MACHINE_ID ]] ); then + comps=$(cd "/boot/$MACHINE_ID"; echo [0-9]*) fi - ;; - 3) - [[ "$cur" ]] || cur=/lib/modules/${COMP_WORDS[2]}/vmlinuz - comps=$(compgen -f -- "$cur") - compopt -o filenames - ;; - esac + fi + ;; + 3) + [[ "$cur" ]] || cur=/lib/modules/${COMP_WORDS[2]}/vmlinuz + comps=$(compgen -f -- "$cur") + compopt -o filenames + ;; + esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _kernel_install kernel-install diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl index db4eb4267f..fe53112fd4 100644 --- a/shell-completion/bash/localectl +++ b/shell-completion/bash/localectl @@ -19,78 +19,78 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } -__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \ - LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \ - LC_NAME LC_ADDRESS LC_TELEPHONE \ +__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME + LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER + LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION ) # LC_ALL is omitted on purpose _localectl() { - local i verb comps locale_vals - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-convert --no-pager --no-ask-password + local i verb comps locale_vals + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-convert --no-pager --no-ask-password -H --host -M --machine' - if __contains_word "$prev" $OPTS; then - case $prev in - --host|-H) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - local -A VERBS=( - [STANDALONE]='status list-locales list-keymaps list-x11-keymap-models list-x11-keymap-layouts list-x11-keymap-options' - [VARIANTS]='list-x11-keymap-variants' - [LOCALES]='set-locale' - [KEYMAPS]='set-keymap' - [X11]='set-x11-keymap' - ) + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done + local -A VERBS=( + [STANDALONE]='status list-locales list-keymaps list-x11-keymap-models list-x11-keymap-layouts list-x11-keymap-options' + [VARIANTS]='list-x11-keymap-variants' + [LOCALES]='set-locale' + [KEYMAPS]='set-keymap' + [X11]='set-x11-keymap' + ) - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[VARIANTS]}; then - comps=$(command localectl list-x11-keymap-layouts) - elif __contains_word "$verb" ${VERBS[LOCALES]}; then - if [[ $cur = *=* ]]; then - mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) - COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") ) - elif [[ $prev = "=" ]]; then - mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) - COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") ) - else - compopt -o nospace - COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") ) - fi - return 0 - elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then - comps=$(command localectl list-keymaps) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then - comps='' + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break fi + done - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[VARIANTS]}; then + comps=$(command localectl list-x11-keymap-layouts) + elif __contains_word "$verb" ${VERBS[LOCALES]}; then + if [[ $cur = *=* ]]; then + mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) + COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") ) + elif [[ $prev = "=" ]]; then + mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) + COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") ) + else + compopt -o nospace + COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") ) + fi return 0 + elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then + comps=$(command localectl list-keymaps) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _localectl localectl diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl index a0d224e9e2..c3e1ca754b 100644 --- a/shell-completion/bash/loginctl +++ b/shell-completion/bash/loginctl @@ -19,10 +19,10 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_all_sessions () { loginctl --no-legend list-sessions | { while read -r a b; do printf "%s\n" "$a"; done; } ; } @@ -30,96 +30,96 @@ __get_all_users () { loginctl --no-legend list-users | { while read -r a b __get_all_seats () { loginctl --no-legend list-seats | { while read -r a b; do printf "%s\n" "$a"; done; } ; } __get_machines() { - local a b - machinectl list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } _loginctl () { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps - - local -A OPTS=( - [STANDALONE]='--all -a --help -h --no-pager --version - --no-legend --no-ask-password -l --full --value' - [ARG]='--host -H --kill-who --property -p --signal -s -M --machine - -n --lines -o --output' - ) - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - _signals - return - ;; - --kill-who) - comps='all leader' - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --property|-p) - comps='' - ;; - --output|-o) - comps=$( loginctl --output=help 2>/dev/null ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps + + local -A OPTS=( + [STANDALONE]='--all -a --help -h --no-pager --version + --no-legend --no-ask-password -l --full --value' + [ARG]='--host -H --kill-who --property -p --signal -s -M --machine + -n --lines -o --output' + ) + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + _signals + return + ;; + --kill-who) + comps='all leader' + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --property|-p) + comps='' + ;; + --output|-o) + comps=$( loginctl --output=help 2>/dev/null ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [SESSIONS]='session-status show-session activate lock-session unlock-session terminate-session kill-session' + [USERS]='user-status show-user enable-linger disable-linger terminate-user kill-user' + [SEATS]='seat-status show-seat terminate-seat' + [STANDALONE]='list-sessions lock-sessions unlock-sessions list-users list-seats flush-devices' + [ATTACH]='attach' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - local -A VERBS=( - [SESSIONS]='session-status show-session activate lock-session unlock-session terminate-session kill-session' - [USERS]='user-status show-user enable-linger disable-linger terminate-user kill-user' - [SEATS]='seat-status show-seat terminate-seat' - [STANDALONE]='list-sessions lock-sessions unlock-sessions list-users list-seats flush-devices' - [ATTACH]='attach' - ) + if [[ -z $verb ]]; then + comps="${VERBS[*]}" - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done + elif __contains_word "$verb" ${VERBS[SESSIONS]}; then + comps=$( __get_all_sessions ) - if [[ -z $verb ]]; then - comps="${VERBS[*]}" + elif __contains_word "$verb" ${VERBS[USERS]}; then + comps=$( __get_all_users ) - elif __contains_word "$verb" ${VERBS[SESSIONS]}; then - comps=$( __get_all_sessions ) + elif __contains_word "$verb" ${VERBS[SEATS]}; then + comps=$( __get_all_seats ) - elif __contains_word "$verb" ${VERBS[USERS]}; then - comps=$( __get_all_users ) + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' - elif __contains_word "$verb" ${VERBS[SEATS]}; then - comps=$( __get_all_seats ) - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - - elif __contains_word "$verb" ${VERBS[ATTACH]}; then - if [[ $prev = $verb ]]; then - comps=$( __get_all_seats ) - else - comps=$(compgen -A file -- "$cur" ) - compopt -o filenames - fi + elif __contains_word "$verb" ${VERBS[ATTACH]}; then + if [[ $prev = $verb ]]; then + comps=$( __get_all_seats ) + else + comps=$(compgen -A file -- "$cur" ) + compopt -o filenames fi + fi - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _loginctl loginctl diff --git a/shell-completion/bash/machinectl b/shell-completion/bash/machinectl index 802a262603..b785cd4154 100644 --- a/shell-completion/bash/machinectl +++ b/shell-completion/bash/machinectl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,99 +17,100 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ - { while read a b; do echo " $a"; done; } | sort -u; + local a b + (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ + { while read a b; do echo " $a"; done; } | sort -u; } _machinectl() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps - - local -A OPTS=( - [STANDALONE]='--all -a -l --full --help -h --no-ask-password --no-legend --no-pager --version --value - --mkdir --read-only --force -q --quiet' - [ARG]='--host -H --kill-who -M --machine --property -p --signal -s --uid -E --setenv -n --lines - -o --output --verify --format --max-addresses' - ) + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A VERBS=( - [STANDALONE]='list list-images clean pull-tar pull-raw list-transfers cancel-transfer import-fs' - [MACHINES]='status show start stop login shell enable disable poweroff reboot terminate kill bind copy-to copy-from - image-status show-image clone rename read-only remove set-limit export-tar export-raw' - [FILE]='import-tar import-raw' - ) + local -A OPTS=( + [STANDALONE]='--all -a -l --full --help -h --no-ask-password --no-legend --no-pager --version --value + --mkdir --read-only --force -q --quiet' + [ARG]='--host -H --kill-who -M --machine --property -p --signal -s --uid -E --setenv -n --lines + -o --output --verify --format --max-addresses' + ) - _init_completion || return + local -A VERBS=( + [STANDALONE]='list list-images clean pull-tar pull-raw list-transfers cancel-transfer import-fs' + [MACHINES]='status show start stop login shell enable disable poweroff reboot terminate kill bind + copy-to copy-from image-status show-image clone rename read-only remove set-limit + export-tar export-raw' + [FILE]='import-tar import-raw' + ) - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - _signals - return - ;; - --kill-who) - comps='all leader' - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --property|-p) - comps='' - ;; - --output|-o) - comps=$( machinectl --output=help 2>/dev/null ) - ;; - --verify) - comps=$( machinectl --verify=help 2>/dev/null ) - ;; - --format) - comps='uncompressed xz gzip bzip2' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + _signals + return + ;; + --kill-who) + comps='all leader' + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --property|-p) + comps='' + ;; + --output|-o) + comps=$( machinectl --output=help 2>/dev/null ) + ;; + --verify) + comps=$( machinectl --verify=help 2>/dev/null ) + ;; + --format) + comps='uncompressed xz gzip bzip2' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ -z $verb ]]; then - comps=${VERBS[*]} + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' + if [[ -z $verb ]]; then + comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[MACHINES]}; then - comps=$( __get_machines ) + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' - elif __contains_word "$verb" ${VERBS[FILE]}; then - comps=$(compgen -f -- "cur") - compopt -o filenames - fi + elif __contains_word "$verb" ${VERBS[MACHINES]}; then + comps=$( __get_machines ) - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + elif __contains_word "$verb" ${VERBS[FILE]}; then + comps=$(compgen -f -- "cur") + compopt -o filenames + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _machinectl machinectl diff --git a/shell-completion/bash/networkctl b/shell-completion/bash/networkctl index fb92c675d2..c4a51df6db 100644 --- a/shell-completion/bash/networkctl +++ b/shell-completion/bash/networkctl @@ -17,55 +17,55 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 } __get_links() { - networkctl list --no-legend --no-pager --all | { while read -r a b c; do echo " $b"; done; }; + networkctl list --no-legend --no-pager --all | { while read -r a b c; do echo " $b"; done; }; } _networkctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-a --all -h --help --version --no-pager --no-legend' - [ARG]='' - ) + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-a --all -h --help --version --no-pager --no-legend' + [ARG]='' + ) - local -A VERBS=( - [STANDALONE]='label' - [LINKS]='status list lldp' - ) + local -A VERBS=( + [STANDALONE]='label' + [LINKS]='status list lldp' + ) - _init_completion || return + _init_completion || return - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[LINKS]}; then - comps=$( __get_links ) + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[LINKS]}; then + comps=$( __get_links ) + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _networkctl networkctl diff --git a/shell-completion/bash/portablectl b/shell-completion/bash/portablectl index 22455d2c1e..d20c9629b7 100644 --- a/shell-completion/bash/portablectl +++ b/shell-completion/bash/portablectl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,95 +17,95 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } _portablectl() { - local i n comps verb - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-q --quiet --runtime --no-reload --cat --no-pager --no-legend + local i n comps verb + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-q --quiet --runtime --no-reload --cat --no-pager --no-legend --no-ask-password -h --help --version' - [ARG]='-p --profile --copy -H --host -M --machine' - ) + [ARG]='-p --profile --copy -H --host -M --machine' + ) - local -A VERBS=( - [STANDALONE]='list' - [IMAGE]='attach detach inspect is-attached set-limit' - [IMAGES]='remove' - [IMAGE_WITH_BOOL]='read-only' - ) + local -A VERBS=( + [STANDALONE]='list' + [IMAGE]='attach detach inspect is-attached set-limit' + [IMAGES]='remove' + [IMAGE_WITH_BOOL]='read-only' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --profile|-p) - comps="default nonetwork strict trusted" - ;; - --copy) - comps="copy symlink auto" - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --profile|-p) + comps="default nonetwork strict trusted" + ;; + --copy) + comps="copy symlink auto" + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done - n=$(($COMP_CWORD - $i)) + n=$(($COMP_CWORD - $i)) - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[IMAGE]}; then - if [[ $n == 1 ]]; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[IMAGES]}; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif __contains_word "$verb" ${VERBS[IMAGE_WITH_BOOL]}; then - if [[ $n == 1 ]]; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif [[ $n == 2 ]]; then - comps='yes no' - else - comps='' - fi + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[IMAGE]}; then + if [[ $n == 1 ]]; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + else + comps='' fi + elif __contains_word "$verb" ${VERBS[IMAGES]}; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif __contains_word "$verb" ${VERBS[IMAGE_WITH_BOOL]}; then + if [[ $n == 1 ]]; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif [[ $n == 2 ]]; then + comps='yes no' + else + comps='' + fi + fi - COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) + return 0 } complete -F _portablectl portablectl diff --git a/shell-completion/bash/resolvectl b/shell-completion/bash/resolvectl index f8167c63d5..161ac4d3c5 100644 --- a/shell-completion/bash/resolvectl +++ b/shell-completion/bash/resolvectl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,165 +17,165 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_interfaces(){ - local name - for name in $(cd /sys/class/net && ls); do - [[ "$name" != "lo" ]] && echo "$name" - done + local name + for name in $(cd /sys/class/net && ls); do + [[ "$name" != "lo" ]] && echo "$name" + done } _resolvectl() { - local i comps verb name - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --no-pager -4 -6 - --service-address=no --service-txt=no - --cname=no --search=no --legend=no' - [ARG]='-i --interface -p --protocol -t --type -c --class --raw' - ) - local -A VERBS=( - [DOMAIN]='query service openpgp' - [FAMILY]='tlsa' - [STATUS]='status' - [LINK]='revert dns domain nta' - [RESOLVE]='llmnr mdns' - [DNSSEC]='dnssec' - [DNSOVERTLS]='dnsovertls' - [STANDALONE]='statistics reset-statistics flush-caches reset-server-features' - ) - local -A ARGS=( - [FAMILY]='tcp udp sctp' - [RESOLVE]='yes no resolve' - [DNSSEC]='yes no allow-downgrade' - [DNSOVERTLS]='no opportunistic' - ) - local interfaces=$( __get_interfaces ) - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --interface|-i) - comps="$interfaces" - ;; - --protocol|-p|--type|-t|--class|-c) - comps=$( resolvectl --legend=no "$prev" help; echo help ) - ;; - --raw) - comps="payload packet" - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + local i comps verb name + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version --no-pager -4 -6 + --service-address=no --service-txt=no + --cname=no --search=no --legend=no' + [ARG]='-i --interface -p --protocol -t --type -c --class --raw' + ) + local -A VERBS=( + [DOMAIN]='query service openpgp' + [FAMILY]='tlsa' + [STATUS]='status' + [LINK]='revert dns domain nta' + [RESOLVE]='llmnr mdns' + [DNSSEC]='dnssec' + [DNSOVERTLS]='dnsovertls' + [STANDALONE]='statistics reset-statistics flush-caches reset-server-features' + ) + local -A ARGS=( + [FAMILY]='tcp udp sctp' + [RESOLVE]='yes no resolve' + [DNSSEC]='yes no allow-downgrade' + [DNSOVERTLS]='no opportunistic' + ) + local interfaces=$( __get_interfaces ) + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --interface|-i) + comps="$interfaces" + ;; + --protocol|-p|--type|-t|--class|-c) + comps=$( resolvectl --legend=no "$prev" help; echo help ) + ;; + --raw) + comps="payload packet" + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi + if [[ -z $verb ]]; then + comps="${VERBS[*]}" + + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[DOMAIN]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[STATUS]}; then + comps="$interfaces" + + elif __contains_word "$verb" ${VERBS[FAMILY]}; then + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[FAMILY]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi done + if [[ -z $name ]]; then + comps=${ARGS[FAMILY]} + else + comps="" + fi - if [[ -z $verb ]]; then - comps="${VERBS[*]}" + elif __contains_word "$verb" ${VERBS[LINK]} ${VERBS[RESOLVE]} ${VERBS[DNSSEC]} ${VERBS[DNSOVERTLS]}; then + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" $interfaces && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[DOMAIN]}; then - comps='' + if [[ -z $name ]]; then + comps="$interfaces" - elif __contains_word "$verb" ${VERBS[STATUS]}; then - comps="$interfaces" + elif __contains_word "$verb" ${VERBS[RESOLVE]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[RESOLVE]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done - elif __contains_word "$verb" ${VERBS[FAMILY]}; then - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[FAMILY]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - if [[ -z $name ]]; then - comps=${ARGS[FAMILY]} - else - comps="" + if [[ -z $name ]]; then + comps=${ARGS[RESOLVE]} + else + comps='' + fi + + elif __contains_word "$verb" ${VERBS[DNSSEC]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSSEC]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; fi + done - elif __contains_word "$verb" ${VERBS[LINK]} ${VERBS[RESOLVE]} ${VERBS[DNSSEC]} ${VERBS[DNSOVERTLS]}; then - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" $interfaces && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps="$interfaces" - - elif __contains_word "$verb" ${VERBS[RESOLVE]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[RESOLVE]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=${ARGS[RESOLVE]} - else - comps='' - fi - - elif __contains_word "$verb" ${VERBS[DNSSEC]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSSEC]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=${ARGS[DNSSEC]} - else - comps='' - fi - - elif __contains_word "$verb" ${VERBS[DNSOVERTLS]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSOVERTLS]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=${ARGS[DNSOVERTLS]} - else - comps='' - fi - - else - comps='' + if [[ -z $name ]]; then + comps=${ARGS[DNSSEC]} + else + comps='' + fi + + elif __contains_word "$verb" ${VERBS[DNSOVERTLS]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSOVERTLS]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; fi + done + + if [[ -z $name ]]; then + comps=${ARGS[DNSOVERTLS]} + else + comps='' + fi + + else + comps='' fi + fi - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _resolvectl resolvectl diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in index d73f956a3f..8c86fed974 100644 --- a/shell-completion/bash/systemctl.in +++ b/shell-completion/bash/systemctl.in @@ -6,308 +6,308 @@ # Copyright © 2010 Ran Benita __systemctl() { - local mode=$1; shift 1 - systemctl $mode --full --no-legend --no-pager "$@" 2>/dev/null + local mode=$1; shift 1 + systemctl $mode --full --no-legend --no-pager "$@" 2>/dev/null } __systemd_properties() { - @rootlibexecdir@/systemd --dump-bus-properties + @rootlibexecdir@/systemd --dump-bus-properties } __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __filter_units_by_properties () { - local mode=$1 properties=$2; shift 2 - local units=("$@") - local props i p n - local names= count=0 - - IFS=$',' read -r -a p < <(echo "Names,$properties") - n=${#p[*]} - readarray -t props < \ - <(__systemctl $mode show --property "Names,$properties" -- "${units[@]}") - - for ((i=0; i < ${#props[*]}; i++)); do - if [[ -z ${props[i]} ]]; then - if (( count == n )) && [[ -n $names ]]; then - echo $names - fi - names= - count=0 - else - (( count++ )) - if [[ ${props[i]%%=*} == 'Names' ]]; then - names=${props[i]#*=} - fi - fi - done - if (( count == n )) && [[ -n $names ]]; then + local mode=$1 properties=$2; shift 2 + local units=("$@") + local props i p n + local names= count=0 + + IFS=$',' read -r -a p < <(echo "Names,$properties") + n=${#p[*]} + readarray -t props < \ + <(__systemctl $mode show --property "Names,$properties" -- "${units[@]}") + + for ((i=0; i < ${#props[*]}; i++)); do + if [[ -z ${props[i]} ]]; then + if (( count == n )) && [[ -n $names ]]; then echo $names + fi + names= + count=0 + else + (( count++ )) + if [[ ${props[i]%%=*} == 'Names' ]]; then + names=${props[i]#*=} + fi fi + done + if (( count == n )) && [[ -n $names ]]; then + echo $names + fi } __get_all_units () { { __systemctl $1 list-unit-files "$2*"; __systemctl $1 list-units --all "$2*"; } \ - | { while read -r a b; do echo " $a"; done; }; } + | { while read -r a b; do echo " $a"; done; }; } __get_non_template_units() { { __systemctl $1 list-unit-files "$2*"; __systemctl $1 list-units --all "$2*"; } \ - | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; } + | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; } __get_template_names () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; } + | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; } __get_active_units () { __systemctl $1 list-units "$2*" \ - | { while read -r a b; do echo " $a"; done; }; } + | { while read -r a b; do echo " $a"; done; }; } __get_not_masked_unit_files() { - # filter out masked, not-found, or template units. - __systemctl $1 list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient "$2*" | \ - { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } + # filter out masked, not-found, or template units. + __systemctl $1 list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient "$2*" | \ + { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } } __get_startable_units () { - __filter_units_by_properties $1 ActiveState=inactive,CanStart=yes $( - { __get_not_masked_unit_files $1 $2 - # get inactive template units - __systemctl $1 list-units --state inactive,failed "$2*" | \ - { while read -r a b c; do [[ $b == "loaded" ]] && echo " $a"; done; } - } | sort -u ) + __filter_units_by_properties $1 ActiveState=inactive,CanStart=yes $( + { __get_not_masked_unit_files $1 $2 + # get inactive template units + __systemctl $1 list-units --state inactive,failed "$2*" | \ + { while read -r a b c; do [[ $b == "loaded" ]] && echo " $a"; done; } + } | sort -u ) } __get_restartable_units () { - # filter out masked and not-found - __filter_units_by_properties $1 CanStart=yes $( - { __get_not_masked_unit_files $1 $2 - __get_active_units $1 $2 - } | sort -u ) + # filter out masked and not-found + __filter_units_by_properties $1 CanStart=yes $( + { __get_not_masked_unit_files $1 $2 + __get_active_units $1 $2 + } | sort -u ) } __get_stoppable_units () { - # filter out masked and not-found - local units=$( - { __get_not_masked_unit_files $1 $2 - __get_active_units $1 $2 - } | sort -u ) - __filter_units_by_properties $1 ActiveState=active,CanStop=yes $units - __filter_units_by_properties $1 ActiveState=reloading,CanStop=yes $units - __filter_units_by_properties $1 ActiveState=activating,CanStop=yes $units + # filter out masked and not-found + local units=$( + { __get_not_masked_unit_files $1 $2 + __get_active_units $1 $2 + } | sort -u ) + __filter_units_by_properties $1 ActiveState=active,CanStop=yes $units + __filter_units_by_properties $1 ActiveState=reloading,CanStop=yes $units + __filter_units_by_properties $1 ActiveState=activating,CanStop=yes $units } __get_reloadable_units () { - # filter out masked and not-found - __filter_units_by_properties $1 ActiveState=active,CanReload=yes $( - { __get_not_masked_unit_files $1 $2 - __get_active_units $1 $2 - } | sort -u ) + # filter out masked and not-found + __filter_units_by_properties $1 ActiveState=active,CanReload=yes $( + { __get_not_masked_unit_files $1 $2 + __get_active_units $1 $2 + } | sort -u ) } __get_failed_units () { __systemctl $1 list-units "$2*" \ - | { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; } + | { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; } __get_enabled_units () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b c ; do [[ $b == "enabled" ]] && echo " $a"; done; }; } + | { while read -r a b c ; do [[ $b == "enabled" ]] && echo " $a"; done; }; } __get_disabled_units () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b c ; do [[ $b == "disabled" ]] && echo " $a"; done; }; } + | { while read -r a b c ; do [[ $b == "disabled" ]] && echo " $a"; done; }; } __get_masked_units () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b c ; do [[ $b == "masked" ]] && echo " $a"; done; }; } + | { while read -r a b c ; do [[ $b == "masked" ]] && echo " $a"; done; }; } __get_all_unit_files () { { __systemctl $1 list-unit-files "$2*"; } | { while read -r a b; do echo " $a"; done; }; } __get_machines() { - local a b - { machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; } | \ - { while read a b; do echo " $a"; done; } + local a b + { machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; } | \ + { while read a b; do echo " $a"; done; } } _systemctl () { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps mode + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps mode - local -A OPTS=( - [STANDALONE]='--all -a --reverse --after --before --defaults --force -f --full -l --global + local -A OPTS=( + [STANDALONE]='--all -a --reverse --after --before --defaults --force -f --full -l --global --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall --now --quiet -q --system --user --version --runtime --recursive -r --firmware-setup --show-types -i --ignore-inhibitors --plain --failed --value --fail --dry-run --wait' - [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root + [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root --preset-mode -n --lines -o --output -M --machine --message' - ) - - if __contains_word "--user" ${COMP_WORDS[*]}; then - mode=--user - elif __contains_word "--global" ${COMP_WORDS[*]}; then - mode=--user - else - mode=--system - fi - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - _signals - return - ;; - --type|-t) - comps=$(__systemctl $mode -t help) - ;; - --state) - comps=$(__systemctl $mode --state=help) - ;; - --job-mode) - comps='fail replace replace-irreversibly isolate + ) + + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + elif __contains_word "--global" ${COMP_WORDS[*]}; then + mode=--user + else + mode=--system + fi + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + _signals + return + ;; + --type|-t) + comps=$(__systemctl $mode -t help) + ;; + --state) + comps=$(__systemctl $mode --state=help) + ;; + --job-mode) + comps='fail replace replace-irreversibly isolate ignore-dependencies ignore-requirements flush' - ;; - --kill-who) - comps='all control main' - ;; - --root) - comps=$(compgen -A directory -- "$cur" ) - compopt -o filenames - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --property|-p) - comps=$(__systemd_properties) - ;; - --preset-mode) - comps='full enable-only disable-only' - ;; - --output|-o) - comps=$( systemctl --output=help 2>/dev/null ) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + ;; + --kill-who) + comps='all control main' + ;; + --root) + comps=$(compgen -A directory -- "$cur" ) + compopt -o filenames + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --property|-p) + comps=$(__systemd_properties) + ;; + --preset-mode) + comps='full enable-only disable-only' + ;; + --output|-o) + comps=$( systemctl --output=help 2>/dev/null ) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - local -A VERBS=( - [ALL_UNITS]='cat mask' + local -A VERBS=( + [ALL_UNITS]='cat mask' [NONTEMPLATE_UNITS]='is-active is-failed is-enabled status show preset help list-dependencies edit set-property revert' - [ENABLED_UNITS]='disable' - [DISABLED_UNITS]='enable' + [ENABLED_UNITS]='disable' + [DISABLED_UNITS]='enable' [REENABLABLE_UNITS]='reenable' - [FAILED_UNITS]='reset-failed' - [STARTABLE_UNITS]='start' - [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart' - [ISOLATABLE_UNITS]='isolate' - [RELOADABLE_UNITS]='reload condreload try-reload-or-restart force-reload' + [FAILED_UNITS]='reset-failed' + [STARTABLE_UNITS]='start' + [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart' + [ISOLATABLE_UNITS]='isolate' + [RELOADABLE_UNITS]='reload condreload try-reload-or-restart force-reload' [RESTARTABLE_UNITS]='restart reload-or-restart' - [TARGET_AND_UNITS]='add-wants add-requires' - [MASKED_UNITS]='unmask' - [JOBS]='cancel' - [ENVS]='set-environment unset-environment import-environment' - [STANDALONE]='daemon-reexec daemon-reload default + [TARGET_AND_UNITS]='add-wants add-requires' + [MASKED_UNITS]='unmask' + [JOBS]='cancel' + [ENVS]='set-environment unset-environment import-environment' + [STANDALONE]='daemon-reexec daemon-reload default emergency exit halt hibernate hybrid-sleep suspend-then-hibernate kexec list-jobs list-sockets list-timers list-units list-unit-files poweroff reboot rescue show-environment suspend get-default is-system-running preset-all' - [FILE]='link switch-root' - [TARGETS]='set-default' - [MACHINES]='list-machines' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps="${VERBS[*]}" - - elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then - comps=$( __get_all_units $mode "$cur" ) - compopt -o filenames + [FILE]='link switch-root' + [TARGETS]='set-default' + [MACHINES]='list-machines' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done - elif __contains_word "$verb" ${VERBS[NONTEMPLATE_UNITS]}; then - comps=$( __get_non_template_units $mode "$cur" ) - compopt -o filenames + if [[ -z $verb ]]; then + comps="${VERBS[*]}" - elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then - comps=$( __get_enabled_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then + comps=$( __get_all_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then - comps=$( __get_disabled_units $mode "$cur"; - __get_template_names $mode "$cur") - compopt -o filenames + elif __contains_word "$verb" ${VERBS[NONTEMPLATE_UNITS]}; then + comps=$( __get_non_template_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then - comps=$( __get_disabled_units $mode "$cur"; - __get_enabled_units $mode "$cur"; - __get_template_names $mode "$cur") - compopt -o filenames + elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then + comps=$( __get_enabled_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then - comps=$( __get_startable_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then + comps=$( __get_disabled_units $mode "$cur"; + __get_template_names $mode "$cur") + compopt -o filenames - elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then - comps=$( __get_restartable_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then + comps=$( __get_disabled_units $mode "$cur"; + __get_enabled_units $mode "$cur"; + __get_template_names $mode "$cur") + compopt -o filenames - elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then - comps=$( __get_stoppable_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then + comps=$( __get_startable_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then - comps=$( __get_reloadable_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then + comps=$( __get_restartable_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then - comps=$( __filter_units_by_properties $mode AllowIsolate=yes \ - $( __get_all_units $mode "$cur" ) ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then + comps=$( __get_stoppable_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then - comps=$( __get_failed_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then + comps=$( __get_reloadable_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then - comps=$( __get_masked_units $mode "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then + comps=$( __filter_units_by_properties $mode AllowIsolate=yes \ + $( __get_all_units $mode "$cur" ) ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then + comps=$( __get_failed_units $mode "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[TARGET_AND_UNITS]}; then - if __contains_word "$prev" ${VERBS[TARGET_AND_UNITS]} \ + elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then + comps=$( __get_masked_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[TARGET_AND_UNITS]}; then + if __contains_word "$prev" ${VERBS[TARGET_AND_UNITS]} \ || __contains_word "$prev" ${OPTS[STANDALONE]}; then - comps=$( __systemctl $mode list-unit-files --type target --all "$cur*" \ - | { while read -r a b; do echo " $a"; done; } ) - else - comps=$( __get_all_unit_files $mode "$cur" ) - fi - compopt -o filenames + comps=$( __systemctl $mode list-unit-files --type target --all "$cur*" \ + | { while read -r a b; do echo " $a"; done; } ) + else + comps=$( __get_all_unit_files $mode "$cur" ) + fi + compopt -o filenames - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' - elif __contains_word "$verb" ${VERBS[JOBS]}; then - comps=$( __systemctl $mode list-jobs | { while read -r a b; do echo " $a"; done; } ) + elif __contains_word "$verb" ${VERBS[JOBS]}; then + comps=$( __systemctl $mode list-jobs | { while read -r a b; do echo " $a"; done; } ) - elif __contains_word "$verb" ${VERBS[ENVS]}; then - comps=$( __systemctl $mode show-environment \ - | while read -r line; do echo " ${line%%=*}="; done ) - compopt -o nospace + elif __contains_word "$verb" ${VERBS[ENVS]}; then + comps=$( __systemctl $mode show-environment \ + | while read -r line; do echo " ${line%%=*}="; done ) + compopt -o nospace - elif __contains_word "$verb" ${VERBS[FILE]}; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames + elif __contains_word "$verb" ${VERBS[FILE]}; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames - elif __contains_word "$verb" ${VERBS[TARGETS]}; then - comps=$( __systemctl $mode list-unit-files --type target --full --all "$cur*" \ - | { while read -r a b; do echo " $a"; done; } ) - fi + elif __contains_word "$verb" ${VERBS[TARGETS]}; then + comps=$( __systemctl $mode list-unit-files --type target --full --all "$cur*" \ + | { while read -r a b; do echo " $a"; done; } ) + fi - COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) + return 0 } complete -F _systemctl systemctl diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze index a4e506d9df..b80e2260fc 100644 --- a/shell-completion/bash/systemd-analyze +++ b/shell-completion/bash/systemd-analyze @@ -19,168 +19,168 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_services() { - systemctl list-units --no-legend --no-pager -t service --all $1 | \ - { while read -r a b c; do [[ $b == "loaded" ]]; echo " $a"; done } + systemctl list-units --no-legend --no-pager -t service --all $1 | \ + { while read -r a b c; do [[ $b == "loaded" ]]; echo " $a"; done } } __get_syscall_sets() { - local line - systemd-analyze syscall-filter --no-pager | while IFS= read -r line; do - if [[ $line == @* ]]; then - printf '%s\n' "$line" - fi - done + local line + systemd-analyze syscall-filter --no-pager | while IFS= read -r line; do + if [[ $line == @* ]]; then + printf '%s\n' "$line" + fi + done } _systemd_analyze() { - local i verb comps mode - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps mode + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --system --user --global --order --require --no-pager + local -A OPTS=( + [STANDALONE]='-h --help --version --system --user --global --order --require --no-pager --man=no --generators=yes' - [ARG]='-H --host -M --machine --fuzz --from-pattern --to-pattern --root' - ) - - local -A VERBS=( - [STANDALONE]='time blame plot dump unit-paths calendar timespan' - [CRITICAL_CHAIN]='critical-chain' - [DOT]='dot' - [LOG_LEVEL]='log-level' - [LOG_TARGET]='log-target' - [VERIFY]='verify' - [SECCOMP_FILTER]='syscall-filter' - [SERVICE_WATCHDOGS]='service-watchdogs' - [CAT_CONFIG]='cat-config' - [SECURITY]='security' - ) - - local CONFIGS='systemd/bootchart.conf systemd/coredump.conf systemd/journald.conf + [ARG]='-H --host -M --machine --fuzz --from-pattern --to-pattern --root' + ) + + local -A VERBS=( + [STANDALONE]='time blame plot dump unit-paths calendar timespan' + [CRITICAL_CHAIN]='critical-chain' + [DOT]='dot' + [LOG_LEVEL]='log-level' + [LOG_TARGET]='log-target' + [VERIFY]='verify' + [SECCOMP_FILTER]='syscall-filter' + [SERVICE_WATCHDOGS]='service-watchdogs' + [CAT_CONFIG]='cat-config' + [SECURITY]='security' + ) + + local CONFIGS='systemd/bootchart.conf systemd/coredump.conf systemd/journald.conf systemd/journal-remote.conf systemd/journal-upload.conf systemd/logind.conf systemd/resolved.conf systemd/networkd.conf systemd/resolved.conf systemd/sleep.conf systemd/system.conf systemd/timedated.conf systemd/timesyncd.conf systemd/user.conf udev/udev.conf' - _init_completion || return - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + _init_completion || return + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ -z $verb && $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} - if [[ -z $verb && $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --no-pager' fi - if [[ -z $verb ]]; then - comps=${VERBS[*]} - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --global --no-pager' - fi - - elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --fuzz --no-pager' - fi - - elif __contains_word "$verb" ${VERBS[DOT]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --global --from-pattern --to-pattern --order --require' - fi - - elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - else - comps='debug info notice warning err crit alert emerg' - fi - - elif __contains_word "$verb" ${VERBS[LOG_TARGET]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - else - comps='console journal kmsg journal-or-kmsg null' - fi - - elif __contains_word "$verb" ${VERBS[SECCOMP_FILTER]}; then - if [[ $cur = -* ]]; then - comps='--help --version --no-pager' - else - comps=$( __get_syscall_sets ) - fi - - elif __contains_word "$verb" ${VERBS[VERIFY]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --global --man=no --generators=yes' - else - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - fi - - elif __contains_word "$verb" ${VERBS[SERVICE_WATCHDOGS]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - else - comps='on off' - fi - - elif __contains_word "$verb" ${VERBS[CAT_CONFIG]}; then - if [[ $cur = -* ]]; then - comps='--help --version --root --no-pager' - elif [[ -z $cur ]]; then - comps="$CONFIGS" - compopt -o filenames - else - comps="$CONFIGS $( compgen -A file -- "$cur" )" - compopt -o filenames - fi - - elif __contains_word "$verb" ${VERBS[SECURITY]}; then - if [[ $cur = -* ]]; then - comps='--help --version --no-pager --system --user -H --host -M --machine' - else - if __contains_word "--user" ${COMP_WORDS[*]}; then - mode=--user - else - mode=--system - fi - comps=$( __get_services $mode ) - fi + elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --fuzz --no-pager' fi - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + elif __contains_word "$verb" ${VERBS[DOT]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --from-pattern --to-pattern --order --require' + fi + + elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + else + comps='debug info notice warning err crit alert emerg' + fi + + elif __contains_word "$verb" ${VERBS[LOG_TARGET]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + else + comps='console journal kmsg journal-or-kmsg null' + fi + + elif __contains_word "$verb" ${VERBS[SECCOMP_FILTER]}; then + if [[ $cur = -* ]]; then + comps='--help --version --no-pager' + else + comps=$( __get_syscall_sets ) + fi + + elif __contains_word "$verb" ${VERBS[VERIFY]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --man=no --generators=yes' + else + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + fi + + elif __contains_word "$verb" ${VERBS[SERVICE_WATCHDOGS]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + else + comps='on off' + fi + + elif __contains_word "$verb" ${VERBS[CAT_CONFIG]}; then + if [[ $cur = -* ]]; then + comps='--help --version --root --no-pager' + elif [[ -z $cur ]]; then + comps="$CONFIGS" + compopt -o filenames + else + comps="$CONFIGS $( compgen -A file -- "$cur" )" + compopt -o filenames + fi + + elif __contains_word "$verb" ${VERBS[SECURITY]}; then + if [[ $cur = -* ]]; then + comps='--help --version --no-pager --system --user -H --host -M --machine' + else + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + else + mode=--system + fi + comps=$( __get_services $mode ) + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd_analyze systemd-analyze diff --git a/shell-completion/bash/systemd-cat b/shell-completion/bash/systemd-cat index c75871c482..62da65da7a 100644 --- a/shell-completion/bash/systemd-cat +++ b/shell-completion/bash/systemd-cat @@ -18,40 +18,40 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _systemd_cat() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version' - [ARG]='-t --identifier -p --priority --level-prefix' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version' + [ARG]='-t --identifier -p --priority --level-prefix' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --identifier|-t) - comps='' - ;; - --priority|-p) - comps='emerg alert crit err warning notice info debug' - ;; - --level-prefix) - comps='yes no' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --identifier|-t) + comps='' + ;; + --priority|-p) + comps='emerg alert crit err warning notice info debug' + ;; + --level-prefix) + comps='yes no' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_cat systemd-cat diff --git a/shell-completion/bash/systemd-cgls b/shell-completion/bash/systemd-cgls index 1e2074a8cb..9a5969bee7 100644 --- a/shell-completion/bash/systemd-cgls +++ b/shell-completion/bash/systemd-cgls @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,53 +17,53 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_units_have_cgroup() { - systemctl $1 list-units | { - while read -r a b c d; do - [[ $c == "active" && ${a##*.} =~ (service|socket|mount|swap|slice|scope) ]] && echo " $a" - done - }; + systemctl $1 list-units | { + while read -r a b c d; do + [[ $c == "active" && ${a##*.} =~ (service|socket|mount|swap|slice|scope) ]] && echo " $a" + done + }; } _systemd_cgls() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version --all -l --full -k --no-pager' - [ARG]='-M --machine -u --unit --user-unit' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version --all -l --full -k --no-pager' + [ARG]='-M --machine -u --unit --user-unit' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --machine|-M) - comps=$( __get_machines ) - ;; - --unit|-u) - comps=$( __get_units_have_cgroup --system ) - ;; - --user-unit) - comps=$( __get_units_have_cgroup --user ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --machine|-M) + comps=$( __get_machines ) + ;; + --unit|-u) + comps=$( __get_units_have_cgroup --system ) + ;; + --user-unit) + comps=$( __get_units_have_cgroup --user ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_cgls systemd-cgls diff --git a/shell-completion/bash/systemd-cgtop b/shell-completion/bash/systemd-cgtop index 8bd83ca442..8689897130 100644 --- a/shell-completion/bash/systemd-cgtop +++ b/shell-completion/bash/systemd-cgtop @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,45 +17,45 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } _systemd_cgtop() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local comps - - local -A OPTS=( - [STANDALONE]='-h --help --version -p -t -c -m -i -b --batch -r --raw -k -P' - [ARG]='--cpu --depth -M --machine --recursive -n --iterations -d --delay --order' - ) - - _init_completion || return - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --machine|-M) - comps=$( __get_machines ) - ;; - --recursive) - comps='yes no' - ;; - --order) - comps='path tasks cpu memory io' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local comps + + local -A OPTS=( + [STANDALONE]='-h --help --version -p -t -c -m -i -b --batch -r --raw -k -P' + [ARG]='--cpu --depth -M --machine --recursive -n --iterations -d --delay --order' + ) + + _init_completion || return + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --machine|-M) + comps=$( __get_machines ) + ;; + --recursive) + comps='yes no' + ;; + --order) + comps='path tasks cpu memory io' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_cgtop systemd-cgtop diff --git a/shell-completion/bash/systemd-delta b/shell-completion/bash/systemd-delta index 29f528cc7a..fcf27ba30e 100644 --- a/shell-completion/bash/systemd-delta +++ b/shell-completion/bash/systemd-delta @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,44 +17,44 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _systemd-delta() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local comps - - local -A OPTS=( - [STANDALONE]='--help -h --no-pager --version' - [ARG]='--diff --type -t' - ) - - _init_completion || return - - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --diff) - comps='yes no' - ;; - --type|-t) - comps='masked equivalent redirected overridden unchanged extended default' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local comps + + local -A OPTS=( + [STANDALONE]='--help -h --no-pager --version' + [ARG]='--diff --type -t' + ) + + _init_completion || return + + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --diff) + comps='yes no' + ;; + --type|-t) + comps='masked equivalent redirected overridden unchanged extended default' + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd-delta systemd-delta diff --git a/shell-completion/bash/systemd-detect-virt b/shell-completion/bash/systemd-detect-virt index cdb516da64..bea00fc7ae 100644 --- a/shell-completion/bash/systemd-detect-virt +++ b/shell-completion/bash/systemd-detect-virt @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,24 +17,24 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _systemd_detect_virt() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version -c --container -v --vm -q --quiet + local -A OPTS=( + [STANDALONE]='-h --help --version -c --container -v --vm -q --quiet --private-users' - ) + ) - _init_completion || return + _init_completion || return - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_detect_virt systemd-detect-virt diff --git a/shell-completion/bash/systemd-id128 b/shell-completion/bash/systemd-id128 index cfd5438cb4..f25848beba 100644 --- a/shell-completion/bash/systemd-id128 +++ b/shell-completion/bash/systemd-id128 @@ -17,58 +17,58 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 } _systemd_id128() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version -p --pretty' - [ARG]='-a --app-specific' - ) + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version -p --pretty' + [ARG]='-a --app-specific' + ) - local -A VERBS=( - [STANDALONE]='new machine-id boot-id invocation-id help' - ) + local -A VERBS=( + [STANDALONE]='new machine-id boot-id invocation-id help' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --app-specific|-a) - comps="" - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --app-specific|-a) + comps="" + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd_id128 systemd-id128 diff --git a/shell-completion/bash/systemd-nspawn b/shell-completion/bash/systemd-nspawn index 3ba2cd6ec9..b4bcba8882 100644 --- a/shell-completion/bash/systemd-nspawn +++ b/shell-completion/bash/systemd-nspawn @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,176 +17,178 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_users() { - local a b - loginctl list-users --no-legend --no-pager | { while read a b; do echo " $b"; done; }; + local a b + loginctl list-users --no-legend --no-pager | { while read a b; do echo " $b"; done; }; } __get_slices() { - local a b - systemctl list-units -t slice --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + systemctl list-units -t slice --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_env() { - local a - env | { while read a; do echo " ${a%%=*}"; done; }; + local a + env | { while read a; do echo " ${a%%=*}"; done; }; } __get_interfaces(){ - local name - for name in $(cd /sys/class/net && ls); do - [[ "$name" != "lo" ]] && echo "$name" - done + local name + for name in $(cd /sys/class/net && ls); do + [[ "$name" != "lo" ]] && echo "$name" + done } __get_rlimit() { - local i - for i in $(systemd-nspawn --rlimit=help 2>/dev/null); do - echo " ${i}=" - done + local i + for i in $(systemd-nspawn --rlimit=help 2>/dev/null); do + echo " ${i}=" + done } _systemd_nspawn() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version --private-network -b --boot --read-only -q --quiet --share-system --keep-unit -n --network-veth - -j -x --ephemeral -a --as-pid2 --private-users-chown -U' - [ARG]='-D --directory -u --user --uuid --capability --drop-capability --link-journal --bind --bind-ro -M --machine - -S --slice -E --setenv -Z --selinux-context -L --selinux-apifs-context --register --network-interface --network-bridge - --personality -i --image --tmpfs --volatile --network-macvlan --kill-signal --template --notify-ready --root-hash - --chdir --pivot-root --property --private-users --network-namespace-path --network-ipvlan --network-veth-extra - --network-zone -p --port --system-call-filter --overlay --overlay-ro --settings - --rlimit --hostname --no-new-privileges --oom-score-adjust --cpu-affinity --resolv-conf --timezone' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version --private-network -b --boot --read-only -q --quiet --share-system + --keep-unit -n --network-veth -j -x --ephemeral -a --as-pid2 --private-users-chown -U' + [ARG]='-D --directory -u --user --uuid --capability --drop-capability --link-journal --bind --bind-ro + -M --machine -S --slice -E --setenv -Z --selinux-context -L --selinux-apifs-context + --register --network-interface --network-bridge --personality -i --image --tmpfs + --volatile --network-macvlan --kill-signal --template --notify-ready --root-hash --chdir + --pivot-root --property --private-users --network-namespace-path --network-ipvlan + --network-veth-extra --network-zone -p --port --system-call-filter --overlay --overlay-ro + --settings --rlimit --hostname --no-new-privileges --oom-score-adjust --cpu-affinity + --resolv-conf --timezone' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --directory|-D|--template) - compopt -o nospace - comps=$(compgen -S/ -A directory -- "$cur" ) - ;; - --user|-u) - comps=$( __get_users ) - ;; - --uuid|--root-hash) - comps='' - ;; - --capability) - comps='CAP_BLOCK_SUSPEND CAP_IPC_LOCK CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_MODULE CAP_SYS_PACCT CAP_SYS_RAWIO - CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM CAP_NET_ADMIN' - ;; - --drop-capability) - comps='CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_FSETID - CAP_IPC_OWNER CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BIND_SERVICE - CAP_NET_BROADCAST CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_ADMIN CAP_SYS_BOOT - CAP_SYS_CHROOT CAP_SYS_NICE CAP_SYS_PTRACE CAP_SYS_RESOURCE CAP_SYS_TTY_CONFIG' - ;; - --link-journal) - comps='no auto guest try-guest host try-host' - ;; - --bind|--bind-ro) - compopt -o nospace - comps=$(compgen -S/ -A directory -- "$cur" ) - ;; - --tmpfs) - compopt -o nospace - comps=$(compgen -S/ -A directory -- "$cur" ) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --slice|-S) - comps=$( __get_slices ) - ;; - --setenv|-E) - comps=$( __get_env ) - ;; - --selinux-context|-Z) - comps='' - ;; - --selinux-apifs-context|-L) - comps='' - ;; - --register) - comps='yes no' - ;; - --network-interface) - comps=$(__get_interfaces) - ;; - --network-bridge) - comps='' - ;; - --network-macvlan) - comps='' - ;; - --personality) - comps='x86 x86-64' - ;; - --volatile) - comps=$( systemd-nspawn --volatile=help 2>/dev/null ) - ;; - --image|-i) - compopt -o nospace - comps=$( compgen -A file -- "$cur" ) - ;; - --kill-signal) - _signals - return - ;; - --notify-ready) - comps='yes no' - ;; - --private-users) - comps='yes no pick' - ;; - --network-namespace-path) - comps=$( compgen -A file -- "$cur" ) - ;; - --settings) - comps='yes no override trusted' - ;; - --rlimit) - comps=$( __get_rlimit ) - ;; - --hostname) - comps='' - ;; - --no-new-privileges) - comps='yes no' - ;; - --oom-score-adjust) - comps='' - ;; - --cpu-affinity) - comps='' - ;; - --resolv-conf) - comps=$( systemd-nspawn --resolv-conf=help 2>/dev/null ) - ;; - --timezone) - comps=$( systemd-nspawn --timezone=help 2>/dev/null ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --directory|-D|--template) + compopt -o nospace + comps=$(compgen -S/ -A directory -- "$cur" ) + ;; + --user|-u) + comps=$( __get_users ) + ;; + --uuid|--root-hash) + comps='' + ;; + --capability) + comps='CAP_BLOCK_SUSPEND CAP_IPC_LOCK CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_MODULE CAP_SYS_PACCT CAP_SYS_RAWIO + CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM CAP_NET_ADMIN' + ;; + --drop-capability) + comps='CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_FSETID + CAP_IPC_OWNER CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BIND_SERVICE + CAP_NET_BROADCAST CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_ADMIN CAP_SYS_BOOT + CAP_SYS_CHROOT CAP_SYS_NICE CAP_SYS_PTRACE CAP_SYS_RESOURCE CAP_SYS_TTY_CONFIG' + ;; + --link-journal) + comps='no auto guest try-guest host try-host' + ;; + --bind|--bind-ro) + compopt -o nospace + comps=$(compgen -S/ -A directory -- "$cur" ) + ;; + --tmpfs) + compopt -o nospace + comps=$(compgen -S/ -A directory -- "$cur" ) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --slice|-S) + comps=$( __get_slices ) + ;; + --setenv|-E) + comps=$( __get_env ) + ;; + --selinux-context|-Z) + comps='' + ;; + --selinux-apifs-context|-L) + comps='' + ;; + --register) + comps='yes no' + ;; + --network-interface) + comps=$(__get_interfaces) + ;; + --network-bridge) + comps='' + ;; + --network-macvlan) + comps='' + ;; + --personality) + comps='x86 x86-64' + ;; + --volatile) + comps=$( systemd-nspawn --volatile=help 2>/dev/null ) + ;; + --image|-i) + compopt -o nospace + comps=$( compgen -A file -- "$cur" ) + ;; + --kill-signal) + _signals + return + ;; + --notify-ready) + comps='yes no' + ;; + --private-users) + comps='yes no pick' + ;; + --network-namespace-path) + comps=$( compgen -A file -- "$cur" ) + ;; + --settings) + comps='yes no override trusted' + ;; + --rlimit) + comps=$( __get_rlimit ) + ;; + --hostname) + comps='' + ;; + --no-new-privileges) + comps='yes no' + ;; + --oom-score-adjust) + comps='' + ;; + --cpu-affinity) + comps='' + ;; + --resolv-conf) + comps=$( systemd-nspawn --resolv-conf=help 2>/dev/null ) + ;; + --timezone) + comps=$( systemd-nspawn --timezone=help 2>/dev/null ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_nspawn systemd-nspawn diff --git a/shell-completion/bash/systemd-path b/shell-completion/bash/systemd-path index 5d99775c2d..189fec0933 100644 --- a/shell-completion/bash/systemd-path +++ b/shell-completion/bash/systemd-path @@ -17,45 +17,45 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 } __get_names() { - systemd-path | { while IFS=: read -r a b; do echo " $a"; done; } + systemd-path | { while IFS=: read -r a b; do echo " $a"; done; } } _systemd_path() { - local comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version' - [ARG]='--suffix' - ) - - _init_completion || return - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --suffix) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - comps=$( __get_names ) + local comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version' + [ARG]='--suffix' + ) + + _init_completion || return + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --suffix) + comps='' + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + comps=$( __get_names ) + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd_path systemd-path diff --git a/shell-completion/bash/systemd-resolve b/shell-completion/bash/systemd-resolve index cd0231a6f4..84747b7462 100644 --- a/shell-completion/bash/systemd-resolve +++ b/shell-completion/bash/systemd-resolve @@ -17,64 +17,64 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_interfaces(){ - local name - for name in $(cd /sys/class/net && ls); do - [[ "$name" != "lo" ]] && echo "$name" - done + local name + for name in $(cd /sys/class/net && ls); do + [[ "$name" != "lo" ]] && echo "$name" + done } _systemd-resolve() { - local i comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --no-pager -4 -6 - --service --openpgp --tlsa --status --statistics - --reset-statistics --service-address=no --service-txt=no - --cname=no --search=no --legend=no --flush-caches - --reset-server-features --revert' - [ARG]='-i --interface -p --protocol -t --type -c --class --raw - --set-dns --set-domain --set-llmnr --set-mdns --set-dnssec --set-nta' - ) + local i comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version --no-pager -4 -6 + --service --openpgp --tlsa --status --statistics + --reset-statistics --service-address=no --service-txt=no + --cname=no --search=no --legend=no --flush-caches + --reset-server-features --revert' + [ARG]='-i --interface -p --protocol -t --type -c --class --raw + --set-dns --set-domain --set-llmnr --set-mdns --set-dnssec --set-nta' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --interface|-i) - comps=$( __get_interfaces ) - ;; - --protocol|-p|--type|-t|--class|-c) - comps=$( systemd-resolve --legend=no "$prev" help; echo help ) - ;; - --raw) - comps="payload packet" - ;; - --set-dns|--set-domain|--set-nta) - comps="" - ;; - --set-llmnr|--set-mdns) - comps="yes no resolve" - ;; - --set-dnssec) - comps="yes no allow-downgrade" - ;; - --set-dnsovertls) - comps="no opportunistic" - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --interface|-i) + comps=$( __get_interfaces ) + ;; + --protocol|-p|--type|-t|--class|-c) + comps=$( systemd-resolve --legend=no "$prev" help; echo help ) + ;; + --raw) + comps="payload packet" + ;; + --set-dns|--set-domain|--set-nta) + comps="" + ;; + --set-llmnr|--set-mdns) + comps="yes no resolve" + ;; + --set-dnssec) + comps="yes no allow-downgrade" + ;; + --set-dnsovertls) + comps="no opportunistic" + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi } complete -F _systemd-resolve systemd-resolve diff --git a/shell-completion/bash/systemd-run b/shell-completion/bash/systemd-run index 0908bd9334..4670973032 100644 --- a/shell-completion/bash/systemd-run +++ b/shell-completion/bash/systemd-run @@ -17,16 +17,16 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __systemctl() { - local mode=$1; shift 1 - systemctl $mode --full --no-legend "$@" + local mode=$1; shift 1 + systemctl $mode --full --no-legend "$@" } __get_slice_units () { __systemctl $1 list-units --all -t slice \ - | { while read -r a b c d; do echo " $a"; done; }; } + | { while read -r a b c d; do echo " $a"; done; }; } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } _systemd_run() { diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl index b2dd1a88c4..75796ff382 100644 --- a/shell-completion/bash/timedatectl +++ b/shell-completion/bash/timedatectl @@ -19,68 +19,68 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } _timedatectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --adjust-system-clock --no-pager - --no-ask-password -H --host -M --machine --monitor - -p --property -a --all --value' + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --adjust-system-clock --no-pager + --no-ask-password -H --host -M --machine --monitor + -p --property -a --all --value' - if __contains_word "$prev" $OPTS; then - case $prev in - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - local -A VERBS=( - [BOOLEAN]='set-local-rtc set-ntp' - [STANDALONE]='status show list-timezones timesync-status show-timesync' - [TIMEZONES]='set-timezone' - [TIME]='set-time' - ) + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done + local -A VERBS=( + [BOOLEAN]='set-local-rtc set-ntp' + [STANDALONE]='status show list-timezones timesync-status show-timesync' + [TIMEZONES]='set-timezone' + [TIME]='set-time' + ) - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[BOOLEAN]}; then - comps='true false' - elif __contains_word "$verb" ${VERBS[TIMEZONES]}; then - comps=$(command timedatectl list-timezones) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[TIME]}; then - comps='' + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break fi + done - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[BOOLEAN]}; then + comps='true false' + elif __contains_word "$verb" ${VERBS[TIMEZONES]}; then + comps=$(command timedatectl list-timezones) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[TIME]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _timedatectl timedatectl diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm index 49db2904a4..0e9dbb0c4e 100644 --- a/shell-completion/bash/udevadm +++ b/shell-completion/bash/udevadm @@ -19,218 +19,225 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_all_sysdevs() { - local -a devs=(/sys/bus/*/devices/*/ /sys/class/*/*/) - printf '%s\n' "${devs[@]%/}" + local -a devs=(/sys/bus/*/devices/*/ /sys/class/*/*/) + printf '%s\n' "${devs[@]%/}" } __get_all_devs() { - local i - for i in /dev/* /dev/*/*; do - echo $i - done + local i + for i in /dev/* /dev/*/*; do + echo $i + done } __get_all_device_units() { - systemctl list-units -t device --full --no-legend --no-pager 2>/dev/null | \ - { while read -r a b; do echo "$a"; done; } + systemctl list-units -t device --full --no-legend --no-pager 2>/dev/null | \ + { while read -r a b; do echo "$a"; done; } } _udevadm() { - local i verb comps builtin - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [COMMON]='-h --help -V --version' - [DEBUG]='-d --debug' - [INFO_STANDALONE]='-r --root -a --attribute-walk -x --export -e --export-db -c --cleanup-db' - [INFO_ARG]='-q --query -p --path -n --name -P --export-prefix -d --device-id-of-file' - [TRIGGER_STANDALONE]='-v --verbose -n --dry-run -w --settle --wait-daemon' - [TRIGGER_ARG]='-t --type -c --action -s --subsystem-match -S --subsystem-nomatch - -a --attr-match -A --attr-nomatch -p --property-match - -g --tag-match -y --sysname-match --name-match -b --parent-match' - [SETTLE]='-t --timeout -E --exit-if-exists' - [CONTROL_STANDALONE]='-e --exit -s --stop-exec-queue -S --start-exec-queue -R --reload --ping' - [CONTROL_ARG]='-l --log-priority -p --property -m --children-max -t --timeout' - [MONITOR_STANDALONE]='-k --kernel -u --udev -p --property' - [MONITOR_ARG]='-s --subsystem-match -t --tag-match' - [TEST]='-a --action -N --resolve-names' - ) - - local verbs=(info trigger settle control monitor test-builtin test) - local builtins=(blkid btrfs hwdb input_id keyboard kmod net_id net_setup_link path_id usb_id uaccess) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}"; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[COMMON]} ${OPTS[DEBUG]}' -- "$cur") ) - else - COMPREPLY=( $(compgen -W '${verbs[*]}' -- "$cur") ) - fi - return 0 + local i verb comps builtin + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [COMMON]='-h --help -V --version' + [DEBUG]='-d --debug' + [INFO_STANDALONE]='-r --root -a --attribute-walk -x --export -e --export-db -c --cleanup-db' + [INFO_ARG]='-q --query -p --path -n --name -P --export-prefix -d --device-id-of-file' + [TRIGGER_STANDALONE]='-v --verbose -n --dry-run -w --settle --wait-daemon' + [TRIGGER_ARG]='-t --type -c --action -s --subsystem-match -S --subsystem-nomatch + -a --attr-match -A --attr-nomatch -p --property-match + -g --tag-match -y --sysname-match --name-match -b --parent-match' + [SETTLE]='-t --timeout -E --exit-if-exists' + [CONTROL_STANDALONE]='-e --exit -s --stop-exec-queue -S --start-exec-queue -R --reload --ping' + [CONTROL_ARG]='-l --log-priority -p --property -m --children-max -t --timeout' + [MONITOR_STANDALONE]='-k --kernel -u --udev -p --property' + [MONITOR_ARG]='-s --subsystem-match -t --tag-match' + [TEST]='-a --action -N --resolve-names' + ) + + local verbs=(info trigger settle control monitor test-builtin test) + local builtins=(blkid btrfs hwdb input_id keyboard kmod net_id net_setup_link path_id usb_id uaccess) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}"; then + verb=${COMP_WORDS[i]} + break fi + done - case $verb in - 'info') - if __contains_word "$prev" ${OPTS[INFO_ARG]}; then - case $prev in - -q|--query) - comps='name symlink path property all' - ;; - -p|--path) - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - ;; - -n|--name) - comps=$( __get_all_devs ) - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - comps="${OPTS[COMMON]} ${OPTS[INFO_STANDALONE]} ${OPTS[INFO_ARG]}" - else - comps=$( __get_all_sysdevs; __get_all_device_units ) - local IFS=$'\n' - fi - ;; - 'trigger') - if __contains_word "$prev" ${OPTS[TRIGGER_ARG]}; then - case $prev in - -t|--type) - comps='devices subsystems' - ;; - -c|--action) - comps='add change remove bind unbind' - ;; - -y|--sysname-match|-b|--parent-match) - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - ;; - --name-match) - comps=$( __get_all_devs ) - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - comps="${OPTS[COMMON]} ${OPTS[TRIGGER_STANDALONE]} ${OPTS[TRIGGER_ARG]}" - else - comps=$( __get_all_sysdevs; __get_all_device_units ) - local IFS=$'\n' - fi - ;; - 'settle') - if __contains_word "$prev" ${OPTS[SETTLE]}; then - case $prev in - -E|--exit-if-exists) - comps=$( compgen -A file -- "$cur" ) - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - comps="${OPTS[COMMON]} ${OPTS[SETTLE]}" - ;; - 'control') - if __contains_word "$prev" ${OPTS[CONTROL_ARG]}; then - case $prev in - -l|--log-priority) - comps='alert crit debug emerg err info notice warning' - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - comps="${OPTS[COMMON]} ${OPTS[CONTROL_STANDALONE]} ${OPTS[CONTROL_ARG]}" - ;; - 'monitor') - if __contains_word "$prev" ${OPTS[MONITOR_ARG]}; then - case $prev in - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - comps="${OPTS[COMMON]} ${OPTS[MONITOR_STANDALONE]} ${OPTS[MONITOR_ARG]}" - ;; - 'test') - if __contains_word "$prev" ${OPTS[TEST]}; then - case $prev in - -a|--action) - comps='add change remove bind unbind' - ;; - -N|--resolve-names) - comps='early late never' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - comps="${OPTS[COMMON]} ${OPTS[TEST]}" - else - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - fi - ;; - 'test-builtin') - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" "${builtins[@]}"; then - builtin=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $builtin ]]; then - comps="${builtins[@]}" - elif [[ $cur = -* ]]; then - comps="${OPTS[COMMON]}" - else - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - fi - ;; - *) - comps=${VERBS[*]} - ;; - esac - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if [[ -z $verb ]]; then + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[COMMON]} ${OPTS[DEBUG]}' -- "$cur") ) + else + COMPREPLY=( $(compgen -W '${verbs[*]}' -- "$cur") ) + fi return 0 + fi + + case $verb in + 'info') + if __contains_word "$prev" ${OPTS[INFO_ARG]}; then + case $prev in + -q|--query) + comps='name symlink path property all' + ;; + -p|--path) + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + ;; + -n|--name) + comps=$( __get_all_devs ) + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + comps="${OPTS[COMMON]} ${OPTS[INFO_STANDALONE]} ${OPTS[INFO_ARG]}" + else + comps=$( __get_all_sysdevs; __get_all_device_units ) + local IFS=$'\n' + fi + ;; + + 'trigger') + if __contains_word "$prev" ${OPTS[TRIGGER_ARG]}; then + case $prev in + -t|--type) + comps='devices subsystems' + ;; + -c|--action) + comps='add change remove bind unbind' + ;; + -y|--sysname-match|-b|--parent-match) + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + ;; + --name-match) + comps=$( __get_all_devs ) + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + comps="${OPTS[COMMON]} ${OPTS[TRIGGER_STANDALONE]} ${OPTS[TRIGGER_ARG]}" + else + comps=$( __get_all_sysdevs; __get_all_device_units ) + local IFS=$'\n' + fi + ;; + + 'settle') + if __contains_word "$prev" ${OPTS[SETTLE]}; then + case $prev in + -E|--exit-if-exists) + comps=$( compgen -A file -- "$cur" ) + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + comps="${OPTS[COMMON]} ${OPTS[SETTLE]}" + ;; + + 'control') + if __contains_word "$prev" ${OPTS[CONTROL_ARG]}; then + case $prev in + -l|--log-priority) + comps='alert crit debug emerg err info notice warning' + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + comps="${OPTS[COMMON]} ${OPTS[CONTROL_STANDALONE]} ${OPTS[CONTROL_ARG]}" + ;; + + 'monitor') + if __contains_word "$prev" ${OPTS[MONITOR_ARG]}; then + case $prev in + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + comps="${OPTS[COMMON]} ${OPTS[MONITOR_STANDALONE]} ${OPTS[MONITOR_ARG]}" + ;; + + 'test') + if __contains_word "$prev" ${OPTS[TEST]}; then + case $prev in + -a|--action) + comps='add change remove bind unbind' + ;; + -N|--resolve-names) + comps='early late never' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + comps="${OPTS[COMMON]} ${OPTS[TEST]}" + else + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + fi + ;; + + 'test-builtin') + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" "${builtins[@]}"; then + builtin=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $builtin ]]; then + comps="${builtins[@]}" + elif [[ $cur = -* ]]; then + comps="${OPTS[COMMON]}" + else + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + fi + ;; + + *) + comps=${VERBS[*]} + ;; + esac + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _udevadm udevadm diff --git a/shell-completion/zsh/_coredumpctl b/shell-completion/zsh/_coredumpctl index e446ad349c..74491626aa 100644 --- a/shell-completion/zsh/_coredumpctl +++ b/shell-completion/zsh/_coredumpctl @@ -5,10 +5,10 @@ _coredumpctl_commands(){ local -a _coredumpctl_cmds _coredumpctl_cmds=( - 'list:List available coredumps' - 'info:Show detailed information about one or more coredumps' - 'dump:Print coredump to stdout' - 'debug:Start debugger (gdb) on a coredump' + 'list:List available coredumps' + 'info:Show detailed information about one or more coredumps' + 'dump:Print coredump to stdout' + 'debug:Start debugger (gdb) on a coredump' ) if (( CURRENT == 1 )); then _describe -t commands 'coredumpctl command' _coredumpctl_cmds diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install index 14793c2f3f..5be5c4c3f2 100644 --- a/shell-completion/zsh/_kernel-install +++ b/shell-completion/zsh/_kernel-install @@ -25,5 +25,3 @@ _arguments \ '1::add or remove:(add remove)' \ '2::kernel versions:_kernel-install_kernels' \ '3::kernel images:_kernel-install_images' - -#vim: set ft=zsh sw=4 ts=4 et diff --git a/shell-completion/zsh/_loginctl b/shell-completion/zsh/_loginctl index 44d6d08c98..c421a9b6c4 100644 --- a/shell-completion/zsh/_loginctl +++ b/shell-completion/zsh/_loginctl @@ -3,158 +3,158 @@ (( $+functions[_loginctl_all_sessions] )) || _loginctl_all_sessions() { - local session description - loginctl --no-legend list-sessions | while read -r session description; do - _sys_all_sessions+=( "$session" ) - _sys_all_sessions_descr+=( "${session}:$description" ) - done + local session description + loginctl --no-legend list-sessions | while read -r session description; do + _sys_all_sessions+=( "$session" ) + _sys_all_sessions_descr+=( "${session}:$description" ) + done } (( $+functions[_loginctl_all_users] )) || _loginctl_all_users() { - local uid description - loginctl --no-legend list-users | while read -r uid description; do - _sys_all_users+=( "$uid" ) - _sys_all_users_descr+=( "${uid}:$description" ) - done + local uid description + loginctl --no-legend list-users | while read -r uid description; do + _sys_all_users+=( "$uid" ) + _sys_all_users_descr+=( "${uid}:$description" ) + done } (( $+functions[_loginctl_all_seats] )) || _loginctl_all_seats() { - local seat description - loginctl --no-legend list-seats | while read -r seat description; do - _sys_all_seats+=( "$seat" ) - _sys_all_seats_descr+=( "${seat}:$description" ) - done + local seat description + loginctl --no-legend list-seats | while read -r seat description; do + _sys_all_seats+=( "$seat" ) + _sys_all_seats_descr+=( "${seat}:$description" ) + done } local fun # Completion functions for SESSIONS for fun in session-status show-session activate lock-session unlock-session terminate-session kill-session ; do - (( $+functions[_loginctl_$fun] )) || _loginctl_$fun() - { + (( $+functions[_loginctl_$fun] )) || +_loginctl_$fun() { local -a _sys_all_sessions{,_descr} _loginctl_all_sessions for _ignore in $words[2,-1]; do - _sys_all_sessions[(i)$_ignore]=() - _sys_all_sessions_descr[(i)$_ignore:*]=() + _sys_all_sessions[(i)$_ignore]=() + _sys_all_sessions_descr[(i)$_ignore:*]=() done if zstyle -T ":completion:${curcontext}:systemd-sessions" verbose; then - _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@" + _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@" else - local expl - _wanted systemd-sessions expl session compadd "$@" -a _sys_all_sessions + local expl + _wanted systemd-sessions expl session compadd "$@" -a _sys_all_sessions fi - } +} done # Completion functions for USERS for fun in user-status show-user enable-linger disable-linger terminate-user kill-user ; do - (( $+functions[_loginctl_$fun] )) || _loginctl_$fun() - { + (( $+functions[_loginctl_$fun] )) || +_loginctl_$fun() { local -a _sys_all_users{,_descr} zstyle -a ":completion:${curcontext}:users" users _sys_all_users if ! (( $#_sys_all_users )); then - _loginctl_all_users + _loginctl_all_users fi for _ignore in $words[2,-1]; do - _sys_all_users[(i)$_ignore]=() - _sys_all_users_descr[(i)$_ignore:*]=() + _sys_all_users[(i)$_ignore]=() + _sys_all_users_descr[(i)$_ignore:*]=() done # using the common tag `users' here, not rolling our own `systemd-users' tag if zstyle -T ":completion:${curcontext}:users" verbose; then - _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@" + _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@" else - local expl - _wanted users expl user compadd "$@" -a _sys_all_users + local expl + _wanted users expl user compadd "$@" -a _sys_all_users fi - } +} done # Completion functions for SEATS -(( $+functions[_loginctl_seats] )) || _loginctl_seats() -{ - local -a _sys_all_seats{,_descr} - - _loginctl_all_seats - for _ignore in $words[2,-1]; do - _sys_all_seats[(i)$_ignore]=() - _sys_all_seats_descr[(i)$_ignore:*]=() - done - - if zstyle -T ":completion:${curcontext}:systemd-seats" verbose; then - _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@" - else - local expl - _wanted systemd-seats expl seat compadd "$@" -a _sys_all_seats - fi +(( $+functions[_loginctl_seats] )) || +_loginctl_seats() { + local -a _sys_all_seats{,_descr} + + _loginctl_all_seats + for _ignore in $words[2,-1]; do + _sys_all_seats[(i)$_ignore]=() + _sys_all_seats_descr[(i)$_ignore:*]=() + done + + if zstyle -T ":completion:${curcontext}:systemd-seats" verbose; then + _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@" + else + local expl + _wanted systemd-seats expl seat compadd "$@" -a _sys_all_seats + fi } for fun in seat-status show-seat terminate-seat ; do - (( $+functions[_loginctl_$fun] )) || _loginctl_$fun() - { _loginctl_seats } + (( $+functions[_loginctl_$fun] )) || +_loginctl_$fun() { _loginctl_seats } done # Completion functions for ATTACH -(( $+functions[_loginctl_attach] )) || _loginctl_attach() -{ - _arguments -w -C -S -s \ - ':seat:_loginctl_seats' \ - '*:device:_files' +(( $+functions[_loginctl_attach] )) || +_loginctl_attach() { + _arguments -w -C -S -s \ + ':seat:_loginctl_seats' \ + '*:device:_files' } # no loginctl completion for: # [STANDALONE]='list-sessions list-users list-seats flush-devices' -(( $+functions[_loginctl_commands] )) || _loginctl_commands() -{ - local -a _loginctl_cmds - _loginctl_cmds=( - "list-sessions:List sessions" - "session-status:Show session status" - "show-session:Show properties of one or more sessions" - "activate:Activate a session" - "lock-session:Screen lock one or more sessions" - "unlock-session:Screen unlock one or more sessions" - "lock-sessions:Screen lock all current sessions" - "unlock-sessions:Screen unlock all current sessions" - "terminate-session:Terminate one or more sessions" - "kill-session:Send signal to processes of a session" - "list-users:List users" - "user-status:Show user status" - "show-user:Show properties of one or more users" - "enable-linger:Enable linger state of one or more users" - "disable-linger:Disable linger state of one or more users" - "terminate-user:Terminate all sessions of one or more users" - "kill-user:Send signal to processes of a user" - "list-seats:List seats" - "seat-status:Show seat status" - "show-seat:Show properties of one or more seats" - "attach:Attach one or more devices to a seat" - "flush-devices:Flush all device associations" - "terminate-seat:Terminate all sessions on one or more seats" - ) - - if (( CURRENT == 1 )); then - _describe -t commands 'loginctl command' _loginctl_cmds || compadd "$@" - else - local curcontext="$curcontext" _ignore - - cmd="${${_loginctl_cmds[(r)$words[1]:*]%%:*}}" - - if (( $#cmd )); then - curcontext="${curcontext%:*:*}:loginctl-${cmd}:" - - _call_function ret _loginctl_$cmd || _message 'no more arguments' +(( $+functions[_loginctl_commands] )) || +_loginctl_commands() { + local -a _loginctl_cmds + _loginctl_cmds=( + "list-sessions:List sessions" + "session-status:Show session status" + "show-session:Show properties of one or more sessions" + "activate:Activate a session" + "lock-session:Screen lock one or more sessions" + "unlock-session:Screen unlock one or more sessions" + "lock-sessions:Screen lock all current sessions" + "unlock-sessions:Screen unlock all current sessions" + "terminate-session:Terminate one or more sessions" + "kill-session:Send signal to processes of a session" + "list-users:List users" + "user-status:Show user status" + "show-user:Show properties of one or more users" + "enable-linger:Enable linger state of one or more users" + "disable-linger:Disable linger state of one or more users" + "terminate-user:Terminate all sessions of one or more users" + "kill-user:Send signal to processes of a user" + "list-seats:List seats" + "seat-status:Show seat status" + "show-seat:Show properties of one or more seats" + "attach:Attach one or more devices to a seat" + "flush-devices:Flush all device associations" + "terminate-seat:Terminate all sessions on one or more seats" + ) + + if (( CURRENT == 1 )); then + _describe -t commands 'loginctl command' _loginctl_cmds || compadd "$@" else - _message "unknown loginctl command: $words[1]" + local curcontext="$curcontext" _ignore + + cmd="${${_loginctl_cmds[(r)$words[1]:*]%%:*}}" + + if (( $#cmd )); then + curcontext="${curcontext%:*:*}:loginctl-${cmd}:" + + _call_function ret _loginctl_$cmd || _message 'no more arguments' + else + _message "unknown loginctl command: $words[1]" + fi + return ret fi - return ret - fi } diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl index 4561e4db75..1590b9f1b9 100644 --- a/shell-completion/zsh/_machinectl +++ b/shell-completion/zsh/_machinectl @@ -2,104 +2,104 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[__machinectl_get_machines] )) || -__machinectl_get_machines () { - machinectl --no-legend list-images | {while read -r a b; do echo $a; done;} -} + __machinectl_get_machines () { + machinectl --no-legend list-images | {while read -r a b; do echo $a; done;} + } (( $+functions[_machinectl_machines] )) || -_machinectl_machines() { - local -a _machines - _machines=("${(fo)$(__machinectl_get_machines)}") - typeset -U _machines - if [[ -n "$_machines" ]]; then - _describe 'machines' _machines - else - _message 'no machines' - fi -} + _machinectl_machines() { + local -a _machines + _machines=("${(fo)$(__machinectl_get_machines)}") + typeset -U _machines + if [[ -n "$_machines" ]]; then + _describe 'machines' _machines + else + _message 'no machines' + fi + } (( $+functions[_machinectl_commands] )) || _machinectl_commands() { - local -a _machinectl_cmds - _machinectl_cmds=( - "list:List currently running VMs/containers" - "status:Show VM/container status" - "show:Show properties of one or more VMs/containers" - "start:Start container as a service" - "stop:Stop container (equal to poweroff)" - "login:Get a login prompt on a VM/container" - "enable:Enable automatic container start at boot" - "disable:Disable automatic container start at boot" - "poweroff:Power off one or more VMs/containers" - "reboot:Reboot one or more VMs/containers" - "terminate:Terminate one or more VMs/containers" - "kill:Send signal to process or a VM/container" - "copy-to:Copy files from the host to a container" - "copy-from:Copy files from a container to the host" - "bind:Bind mount a path from the host into a container" + local -a _machinectl_cmds + _machinectl_cmds=( + "list:List currently running VMs/containers" + "status:Show VM/container status" + "show:Show properties of one or more VMs/containers" + "start:Start container as a service" + "stop:Stop container (equal to poweroff)" + "login:Get a login prompt on a VM/container" + "enable:Enable automatic container start at boot" + "disable:Disable automatic container start at boot" + "poweroff:Power off one or more VMs/containers" + "reboot:Reboot one or more VMs/containers" + "terminate:Terminate one or more VMs/containers" + "kill:Send signal to process or a VM/container" + "copy-to:Copy files from the host to a container" + "copy-from:Copy files from a container to the host" + "bind:Bind mount a path from the host into a container" - "list-images:Show available container and VM images" - "image-status:Show image details" - "show-image:Show properties of image" - "clone:Clone an image" - "rename:Rename an image" - "read-only:Mark or unmark image read-only" - "remove:Remove an image" + "list-images:Show available container and VM images" + "image-status:Show image details" + "show-image:Show properties of image" + "clone:Clone an image" + "rename:Rename an image" + "read-only:Mark or unmark image read-only" + "remove:Remove an image" - "pull-tar:Download a TAR container image" - "pull-raw:Download a RAW container or VM image" - "list-transfers:Show list of downloads in progress" - "cancel-transfer:Cancel a download" - ) + "pull-tar:Download a TAR container image" + "pull-raw:Download a RAW container or VM image" + "list-transfers:Show list of downloads in progress" + "cancel-transfer:Cancel a download" + ) - if (( CURRENT == 1 )); then - _describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@" - else - local curcontext="$curcontext" - cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}" - if (( $#cmd )); then - if (( CURRENT == 2 )); then - case $cmd in - list*|cancel-transfer|pull-tar|pull-raw) - msg="no options" ;; - clone) - _machinectl_machines ;; - start) - _machinectl_machines ;; - *) - _sd_machines - esac - else - case $cmd in - copy-to|copy-from|bind) - _files ;; - *) msg="no options" - esac - fi + if (( CURRENT == 1 )); then + _describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@" else - _message "no more options" + local curcontext="$curcontext" + cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}" + if (( $#cmd )); then + if (( CURRENT == 2 )); then + case $cmd in + list*|cancel-transfer|pull-tar|pull-raw) + msg="no options" ;; + clone) + _machinectl_machines ;; + start) + _machinectl_machines ;; + *) + _sd_machines + esac + else + case $cmd in + copy-to|copy-from|bind) + _files ;; + *) msg="no options" + esac + fi + else + _message "no more options" + fi fi - fi } _arguments \ - {-h,--help}'[Prints a short help text and exits.]' \ - '--version[Prints a short version string and exits.]' \ - '--no-pager[Do not pipe output into a pager.]' \ - '--no-legend[Do not show the headers and footers.]' \ - '--no-ask-password[Do not ask for system passwords.]' \ - {-H+,--host=}'[Operate on remote host.]:userathost:_sd_hosts_or_user_at_host' \ - {-M+,--machine=}'[Operate on local container.]:machine:_sd_machines' \ - {-p+,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \ - {-a,--all}'[Show all properties.]' \ - {-q,--quiet}'[Suppress output.]' \ - {-l,--full}'[Do not ellipsize cgroup members.]' \ - '--kill-who=[Who to send signal to.]:killwho:(leader all)' \ - {-s+,--signal=}'[Which signal to send.]:signal:_signals' \ - '--read-only[Create read-only bind mount.]' \ - '--mkdir[Create directory before bind mounting, if missing.]' \ - {-n+,--lines=}'[Number of journal entries to show.]:integer' \ - {-o+,--output=}'[Change journal output mode.]:output modes:_sd_outputmodes' \ - '--verify=[Verification mode for downloaded images.]:verify:(no checksum signature)' \ - '--force[Download image even if already exists.]' \ - '*::machinectl command:_machinectl_commands' + {-h,--help}'[Prints a short help text and exits.]' \ + '--version[Prints a short version string and exits.]' \ + '--no-pager[Do not pipe output into a pager.]' \ + '--no-legend[Do not show the headers and footers.]' \ + '--no-ask-password[Do not ask for system passwords.]' \ + {-H+,--host=}'[Operate on remote host.]:userathost:_sd_hosts_or_user_at_host' \ + {-M+,--machine=}'[Operate on local container.]:machine:_sd_machines' \ + {-p+,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \ + {-a,--all}'[Show all properties.]' \ + {-q,--quiet}'[Suppress output.]' \ + {-l,--full}'[Do not ellipsize cgroup members.]' \ + '--kill-who=[Who to send signal to.]:killwho:(leader all)' \ + {-s+,--signal=}'[Which signal to send.]:signal:_signals' \ + '--read-only[Create read-only bind mount.]' \ + '--mkdir[Create directory before bind mounting, if missing.]' \ + {-n+,--lines=}'[Number of journal entries to show.]:integer' \ + {-o+,--output=}'[Change journal output mode.]:output modes:_sd_outputmodes' \ + '--verify=[Verification mode for downloaded images.]:verify:(no checksum signature)' \ + '--force[Download image even if already exists.]' \ + '*::machinectl command:_machinectl_commands' diff --git a/shell-completion/zsh/_networkctl b/shell-completion/zsh/_networkctl index ab62a6d9bf..c9b730fbe3 100644 --- a/shell-completion/zsh/_networkctl +++ b/shell-completion/zsh/_networkctl @@ -2,32 +2,32 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_networkctl_commands] )) || -_networkctl_commands(){ - local -a _networkctl_cmds - _networkctl_cmds=( + _networkctl_commands() { + local -a _networkctl_cmds + _networkctl_cmds=( 'list:List existing links' 'status:Show information about the specified links' 'lldp:Show Link Layer Discovery Protocol status' 'label:Show address labels' - ) - if (( CURRENT == 1 )); then - _describe -t commands 'networkctl command' _networkctl_cmds - else - local curcontext="$curcontext" - local -a _links - cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}" - if [ $cmd = "status" ]; then - _links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" ) - if [[ -n "$_links" ]]; then - _describe -t links 'links' _links + ) + if (( CURRENT == 1 )); then + _describe -t commands 'networkctl command' _networkctl_cmds + else + local curcontext="$curcontext" + local -a _links + cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}" + if [ $cmd = "status" ]; then + _links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" ) + if [[ -n "$_links" ]]; then + _describe -t links 'links' _links + else + _message "no links" + fi else - _message "no links" + _message "no more options" fi - else - _message "no more options" fi - fi -} + } _arguments \ {-a,--all}'[Show all links with status]' \ diff --git a/shell-completion/zsh/_sd_hosts_or_user_at_host b/shell-completion/zsh/_sd_hosts_or_user_at_host index 11f94f1976..a510bf3cf1 100644 --- a/shell-completion/zsh/_sd_hosts_or_user_at_host +++ b/shell-completion/zsh/_sd_hosts_or_user_at_host @@ -2,5 +2,5 @@ # SPDX-License-Identifier: LGPL-2.1+ _alternative \ - 'users-hosts:: _user_at_host' \ - 'hosts:: _hosts' + 'users-hosts:: _user_at_host' \ + 'hosts:: _hosts' diff --git a/shell-completion/zsh/_sd_machines b/shell-completion/zsh/_sd_machines index e783620b97..30b7fd81a3 100644 --- a/shell-completion/zsh/_sd_machines +++ b/shell-completion/zsh/_sd_machines @@ -2,15 +2,15 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[__sd_machines_get_machines] )) || -__sd_machines_get_machines () { + __sd_machines_get_machines () { machinectl --full --no-legend --no-pager list | {while read -r a b; do echo $a; done;}; -} + } local -a _machines _machines=("${(fo)$(__sd_machines_get_machines)}") typeset -U _machines if [[ -n "$_machines" ]]; then - _describe 'machines' _machines + _describe 'machines' _machines else - _message 'no machines' + _message 'no machines' fi diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in index 590fc49604..0c86fec95c 100644 --- a/shell-completion/zsh/_systemctl.in +++ b/shell-completion/zsh/_systemctl.in @@ -3,197 +3,197 @@ (( $+functions[_systemctl_commands] )) || _systemctl_commands() { - local -a _systemctl_cmds - _systemctl_cmds=( - "list-sockets:List sockets" - "list-timers:List timers" - "list-units:List units" - "start:Start (activate) one or more units" - "stop:Stop (deactivate) one or more units" - "reload:Reload one or more units" - "restart:Start or restart one or more units" - "condrestart:Restart one or more units if active" - "try-restart:Restart one or more units if active" - "reload-or-restart:Reload one or more units if possible, otherwise start or restart" - "force-reload:Reload one or more units if possible, otherwise restart if active" - "hibernate:Hibernate the system" - "hybrid-sleep:Hibernate and suspend the system" - "suspend-then-hibernate:Suspend the system for a period of time, and then hibernate it" - "try-reload-or-restart:Reload one or more units if possible, otherwise restart if active" - "isolate:Start one unit and stop all others" - "kill:Send signal to processes of a unit" - "is-active:Check whether units are active" - "is-failed:Check whether units are failed" - "status:Show runtime status of one or more units" - "show:Show properties of one or more units/jobs or the manager" - "cat:Show the source unit files and drop-ins" - "reset-failed:Reset failed state for all, one, or more units" - "list-unit-files:List installed unit files" - "enable:Enable one or more unit files" - "disable:Disable one or more unit files" - "add-wants:Add Wants= dependencies to a unit" - "add-requires:Add Requires= dependencies to a unit" - "reenable:Reenable one or more unit files" - "preset:Enable/disable one or more unit files based on preset configuration" - "set-default:Set the default target" - "get-default:Query the default target" - "edit:Edit one or more unit files" - "is-system-running:Query overall status of the system" - "help:Show documentation for specified units" - "list-dependencies:Show unit dependency tree" - "mask:Mask one or more units" - "unmask:Unmask one or more units" - "link:Link one or more units files into the search path" - "is-enabled:Check whether unit files are enabled" - "list-jobs:List jobs" - "cancel:Cancel all, one, or more jobs" - "show-environment:Dump environment" - "set-environment:Set one or more environment variables" - "unset-environment:Unset one or more environment variables" - "daemon-reload:Reload systemd manager configuration" - "daemon-reexec:Reexecute systemd manager" - "default:Enter system default mode" - "rescue:Enter system rescue mode" - "emergency:Enter system emergency mode" - "halt:Shut down and halt the system" - "suspend:Suspend the system" - "poweroff:Shut down and power-off the system" - "reboot:Shut down and reboot the system" - "kexec:Shut down and reboot the system with kexec" - "exit:Ask for user instance termination" - "switch-root:Change root directory" - "revert:Revert unit files to their vendor versions" - "set-property:Sets one or more properties of a unit" - ) - - if (( CURRENT == 1 )); then - _describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@" - else - local curcontext="$curcontext" expl - - cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}" - # Deal with any aliases - case $cmd in - condrestart) cmd="try-restart";; - force-reload) cmd="try-reload-or-restart";; - esac - - if (( $#cmd )); then - curcontext="${curcontext%:*:*}:systemctl-${cmd}:" - - local update_policy - zstyle -s ":completion:${curcontext}:" cache-policy update_policy - if [[ -z "$update_policy" ]]; then - zstyle ":completion:${curcontext}:" cache-policy _systemctl_caching_policy - fi - - _call_function ret _systemctl_$cmd || _message 'no more arguments' + local -a _systemctl_cmds + _systemctl_cmds=( + "list-sockets:List sockets" + "list-timers:List timers" + "list-units:List units" + "start:Start (activate) one or more units" + "stop:Stop (deactivate) one or more units" + "reload:Reload one or more units" + "restart:Start or restart one or more units" + "condrestart:Restart one or more units if active" + "try-restart:Restart one or more units if active" + "reload-or-restart:Reload one or more units if possible, otherwise start or restart" + "force-reload:Reload one or more units if possible, otherwise restart if active" + "hibernate:Hibernate the system" + "hybrid-sleep:Hibernate and suspend the system" + "suspend-then-hibernate:Suspend the system for a period of time, and then hibernate it" + "try-reload-or-restart:Reload one or more units if possible, otherwise restart if active" + "isolate:Start one unit and stop all others" + "kill:Send signal to processes of a unit" + "is-active:Check whether units are active" + "is-failed:Check whether units are failed" + "status:Show runtime status of one or more units" + "show:Show properties of one or more units/jobs or the manager" + "cat:Show the source unit files and drop-ins" + "reset-failed:Reset failed state for all, one, or more units" + "list-unit-files:List installed unit files" + "enable:Enable one or more unit files" + "disable:Disable one or more unit files" + "add-wants:Add Wants= dependencies to a unit" + "add-requires:Add Requires= dependencies to a unit" + "reenable:Reenable one or more unit files" + "preset:Enable/disable one or more unit files based on preset configuration" + "set-default:Set the default target" + "get-default:Query the default target" + "edit:Edit one or more unit files" + "is-system-running:Query overall status of the system" + "help:Show documentation for specified units" + "list-dependencies:Show unit dependency tree" + "mask:Mask one or more units" + "unmask:Unmask one or more units" + "link:Link one or more units files into the search path" + "is-enabled:Check whether unit files are enabled" + "list-jobs:List jobs" + "cancel:Cancel all, one, or more jobs" + "show-environment:Dump environment" + "set-environment:Set one or more environment variables" + "unset-environment:Unset one or more environment variables" + "daemon-reload:Reload systemd manager configuration" + "daemon-reexec:Reexecute systemd manager" + "default:Enter system default mode" + "rescue:Enter system rescue mode" + "emergency:Enter system emergency mode" + "halt:Shut down and halt the system" + "suspend:Suspend the system" + "poweroff:Shut down and power-off the system" + "reboot:Shut down and reboot the system" + "kexec:Shut down and reboot the system with kexec" + "exit:Ask for user instance termination" + "switch-root:Change root directory" + "revert:Revert unit files to their vendor versions" + "set-property:Sets one or more properties of a unit" + ) + + if (( CURRENT == 1 )); then + _describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@" else - _message "unknown systemctl command: $words[1]" + local curcontext="$curcontext" expl + + cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}" + # Deal with any aliases + case $cmd in + condrestart) cmd="try-restart";; + force-reload) cmd="try-reload-or-restart";; + esac + + if (( $#cmd )); then + curcontext="${curcontext%:*:*}:systemctl-${cmd}:" + + local update_policy + zstyle -s ":completion:${curcontext}:" cache-policy update_policy + if [[ -z "$update_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy _systemctl_caching_policy + fi + + _call_function ret _systemctl_$cmd || _message 'no more arguments' + else + _message "unknown systemctl command: $words[1]" + fi + return ret fi - return ret - fi } # @todo _systemd-run has a helper with the same name, so we must redefine __systemctl() { - systemctl $_sys_service_mgr --full --no-legend --no-pager "$@" 2>/dev/null + systemctl $_sys_service_mgr --full --no-legend --no-pager "$@" 2>/dev/null } # Fills the unit list (( $+functions[_systemctl_all_units] )) || -_systemctl_all_units() + _systemctl_all_units() { - if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS$_sys_service_mgr ) || - ! _retrieve_cache SYS_ALL_UNITS$_sys_service_mgr; - then - _sys_all_units=( ${${(f)"$(__systemctl list-units --all "$PREFIX*" )"}%% *} ) - _store_cache SYS_ALL_UNITS$_sys_service_mgr _sys_all_units - fi + if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS$_sys_service_mgr ) || + ! _retrieve_cache SYS_ALL_UNITS$_sys_service_mgr; + then + _sys_all_units=( ${${(f)"$(__systemctl list-units --all "$PREFIX*" )"}%% *} ) + _store_cache SYS_ALL_UNITS$_sys_service_mgr _sys_all_units + fi } # Fills the unit list including all file units (( $+functions[_systemctl_really_all_units] )) || -_systemctl_really_all_units() + _systemctl_really_all_units() { - local -a all_unit_files; - local -a really_all_units; - if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS$_sys_service_mgr ) || - ! _retrieve_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr; - then - all_unit_files=( ${${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}%% *} ) - _systemctl_all_units - really_all_units=($_sys_all_units $all_unit_files) - _sys_really_all_units=(${(u)really_all_units}) - _store_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr _sys_really_all_units - fi + local -a all_unit_files; + local -a really_all_units; + if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS$_sys_service_mgr ) || + ! _retrieve_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr; + then + all_unit_files=( ${${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}%% *} ) + _systemctl_all_units + really_all_units=($_sys_all_units $all_unit_files) + _sys_really_all_units=(${(u)really_all_units}) + _store_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr _sys_really_all_units + fi } (( $+functions[_filter_units_by_property] )) || -_filter_units_by_property() { - local property=$1 value=$2; shift 2 - local -a units; units=("${(q-)@}") - local -A props - props=(${(f)"$(_call_program units "$service $_sys_service_mgr show --no-pager --property=\"Id,$property\" -- ${units} 2>/dev/null")"}) - echo -E - "${(@g:o:)${(k@)props[(Re)$property=$value]}#Id=}" -} + _filter_units_by_property() { + local property=$1 value=$2; shift 2 + local -a units; units=("${(q-)@}") + local -A props + props=(${(f)"$(_call_program units "$service $_sys_service_mgr show --no-pager --property=\"Id,$property\" -- ${units} 2>/dev/null")"}) + echo -E - "${(@g:o:)${(k@)props[(Re)$property=$value]}#Id=}" + } (( $+functions[_systemctl_get_non_template_names] )) || -_systemctl_get_non_template_names() { echo -E - ${^${(R)${(f)"$( + _systemctl_get_non_template_names() { echo -E - ${^${(R)${(f)"$( __systemctl $mode list-unit-files "$PREFIX*" __systemctl $mode list-units --all "$PREFIX*" )"}:#*@.*}%%[[:space:]]*} } (( $+functions[_systemctl_get_template_names] )) || -_systemctl_get_template_names() { echo -E - ${^${(M)${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}##*@.[^[:space:]]##}%%@.*}\@ } + _systemctl_get_template_names() { echo -E - ${^${(M)${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}##*@.[^[:space:]]##}%%@.*}\@ } (( $+functions[_systemctl_active_units] )) || -_systemctl_active_units() {_sys_active_units=( ${${(f)"$(__systemctl list-units "$PREFIX*" )"}%% *} )} + _systemctl_active_units() {_sys_active_units=( ${${(f)"$(__systemctl list-units "$PREFIX*" )"}%% *} )} (( $+functions[_systemctl_startable_units] )) || -_systemctl_startable_units(){ - _sys_startable_units=( $( _filter_units_by_property ActiveState inactive $( - _filter_units_by_property CanStart yes ${${${(f)"$( + _systemctl_startable_units(){ + _sys_startable_units=( $( _filter_units_by_property ActiveState inactive $( + _filter_units_by_property CanStart yes ${${${(f)"$( __systemctl $mode list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient "$PREFIX*" __systemctl $mode list-units --state inactive,failed "$PREFIX*" )"}:#*@.*}%%[[:space:]]*} - )) ) -} + )) ) + } (( $+functions[_systemctl_restartable_units] )) || -_systemctl_restartable_units(){ - _sys_restartable_units=( $( _filter_units_by_property CanStart yes ${${${(f)"$( + _systemctl_restartable_units(){ + _sys_restartable_units=( $( _filter_units_by_property CanStart yes ${${${(f)"$( __systemctl $mode list-unit-files --state enabled,disabled,static "$PREFIX*" __systemctl $mode list-units "$PREFIX*" )"}:#*@.*}%%[[:space:]]*} ) ) -} + } (( $+functions[_systemctl_failed_units] )) || -_systemctl_failed_units() {_sys_failed_units=( ${${(f)"$(__systemctl list-units --state=failed "$PREFIX*" )"}%% *} ) } + _systemctl_failed_units() {_sys_failed_units=( ${${(f)"$(__systemctl list-units --state=failed "$PREFIX*" )"}%% *} ) } (( $+functions[_systemctl_unit_state] )) || -_systemctl_unit_state() { typeset -gA _sys_unit_state; _sys_unit_state=( $(__systemctl list-unit-files "$PREFIX*" ) ) } + _systemctl_unit_state() { typeset -gA _sys_unit_state; _sys_unit_state=( $(__systemctl list-unit-files "$PREFIX*" ) ) } local fun # Completion functions for ALL_UNITS for fun in cat mask ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - _systemctl_really_all_units - _wanted systemd-units expl unit \ - compadd "$@" -a - _sys_really_all_units - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + _systemctl_really_all_units + _wanted systemd-units expl unit \ + compadd "$@" -a - _sys_really_all_units + } done # Completion functions for NONTEMPLATE_UNITS for fun in is-active is-failed is-enabled status show preset help list-dependencies edit revert add-wants add-requires set-property; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - _wanted systemd-units expl unit \ - compadd "$@" - $(_systemctl_get_non_template_names) - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + _wanted systemd-units expl unit \ + compadd "$@" - $(_systemctl_get_non_template_names) + } done # Completion functions for ENABLED_UNITS @@ -201,126 +201,126 @@ done { local _sys_unit_state; _systemctl_unit_state _wanted systemd-units expl 'enabled unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)enabled]} + compadd "$@" - ${(k)_sys_unit_state[(R)enabled]} } (( $+functions[_systemctl_reenable] )) || _systemctl_reenable() { local _sys_unit_state; _systemctl_unit_state _wanted systemd-units expl 'enabled/disabled unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)(enabled|disabled)]} $(_systemctl_get_template_names) + compadd "$@" - ${(k)_sys_unit_state[(R)(enabled|disabled)]} $(_systemctl_get_template_names) } # Completion functions for DISABLED_UNITS (( $+functions[_systemctl_enable] )) || _systemctl_enable() { - local _sys_unit_state; _systemctl_unit_state - _wanted systemd-units expl 'disabled unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)disabled]} $(_systemctl_get_template_names) + local _sys_unit_state; _systemctl_unit_state + _wanted systemd-units expl 'disabled unit' \ + compadd "$@" - ${(k)_sys_unit_state[(R)disabled]} $(_systemctl_get_template_names) } # Completion functions for FAILED_UNITS (( $+functions[_systemctl_reset-failed] )) || _systemctl_reset-failed() { - local _sys_failed_units; _systemctl_failed_units - _wanted systemd-units expl 'failed unit' \ - compadd "$@" -a - _sys_failed_units || _message "no failed unit found" + local _sys_failed_units; _systemctl_failed_units + _wanted systemd-units expl 'failed unit' \ + compadd "$@" -a - _sys_failed_units || _message "no failed unit found" } # Completion functions for STARTABLE_UNITS (( $+functions[_systemctl_start] )) || _systemctl_start() { - local _sys_startable_units; _systemctl_startable_units - _wanted systemd-units expl 'startable unit' \ - compadd "$@" - ${_sys_startable_units[*]} + local _sys_startable_units; _systemctl_startable_units + _wanted systemd-units expl 'startable unit' \ + compadd "$@" - ${_sys_startable_units[*]} } # Completion functions for STOPPABLE_UNITS for fun in stop kill try-restart condrestart ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local _sys_active_units; _systemctl_active_units - _wanted systemd-units expl 'stoppable unit' \ - compadd "$@" - $( _filter_units_by_property CanStop yes \ - ${_sys_active_units[*]} ) - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local _sys_active_units; _systemctl_active_units + _wanted systemd-units expl 'stoppable unit' \ + compadd "$@" - $( _filter_units_by_property CanStop yes \ + ${_sys_active_units[*]} ) + } done # Completion functions for ISOLATABLE_UNITS (( $+functions[_systemctl_isolate] )) || _systemctl_isolate() { - _systemctl_all_units - _wanted systemd-units expl 'isolatable unit' \ - compadd "$@" - $( _filter_units_by_property AllowIsolate yes \ - ${_sys_all_units[*]} ) + _systemctl_all_units + _wanted systemd-units expl 'isolatable unit' \ + compadd "$@" - $( _filter_units_by_property AllowIsolate yes \ + ${_sys_all_units[*]} ) } # Completion functions for RELOADABLE_UNITS for fun in reload try-reload-or-restart force-reload ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local _sys_active_units; _systemctl_active_units - _wanted systemd-units expl 'reloadable unit' \ - compadd "$@" - $( _filter_units_by_property CanReload yes \ - ${_sys_active_units[*]} ) - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local _sys_active_units; _systemctl_active_units + _wanted systemd-units expl 'reloadable unit' \ + compadd "$@" - $( _filter_units_by_property CanReload yes \ + ${_sys_active_units[*]} ) + } done # Completion functions for RESTARTABLE_UNITS for fun in restart reload-or-restart ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local _sys_restartable_units; _systemctl_restartable_units - _wanted systemd-units expl 'restartable unit' \ - compadd "$@" - ${_sys_restartable_units[*]} - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local _sys_restartable_units; _systemctl_restartable_units + _wanted systemd-units expl 'restartable unit' \ + compadd "$@" - ${_sys_restartable_units[*]} + } done # Completion functions for MASKED_UNITS (( $+functions[_systemctl_unmask] )) || _systemctl_unmask() { - local _sys_unit_state; _systemctl_unit_state - _wanted systemd-units expl 'masked unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)masked]} || _message "no masked units found" + local _sys_unit_state; _systemctl_unit_state + _wanted systemd-units expl 'masked unit' \ + compadd "$@" - ${(k)_sys_unit_state[(R)masked]} || _message "no masked units found" } # Completion functions for JOBS (( $+functions[_systemctl_cancel] )) || _systemctl_cancel() { - _wanted systemd-jobs expl job \ - compadd "$@" - ${${(f)"$(__systemctl list-jobs)"}%% *} || - _message "no jobs found" + _wanted systemd-jobs expl job \ + compadd "$@" - ${${(f)"$(__systemctl list-jobs)"}%% *} || + _message "no jobs found" } # Completion functions for TARGETS (( $+functions[_systemctl_set-default] )) || _systemctl_set-default() { - _wanted systemd-targets expl target \ - compadd "$@" - ${${(f)"$(__systemctl list-unit-files --type target --all "$PREFIX*" )"}%% *} || - _message "no targets found" + _wanted systemd-targets expl target \ + compadd "$@" - ${${(f)"$(__systemctl list-unit-files --type target --all "$PREFIX*" )"}%% *} || + _message "no targets found" } # Completion functions for ENVS for fun in set-environment unset-environment ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local fun=$0 ; fun=${fun##_systemctl_} - local suf - if [[ "${fun}" = "set-environment" ]]; then - suf='-S=' - fi - _wanted systemd-environment expl 'environment variable' \ - compadd "$@" ${suf} - ${${(f)"$(systemctl show-environment)"}%%=*} - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local fun=$0 ; fun=${fun##_systemctl_} + local suf + if [[ "${fun}" = "set-environment" ]]; then + suf='-S=' + fi + _wanted systemd-environment expl 'environment variable' \ + compadd "$@" ${suf} - ${${(f)"$(systemctl show-environment)"}%%=*} + } done (( $+functions[_systemctl_link] )) || _systemctl_link() { - _sd_unit_files -} + _sd_unit_files + } (( $+functions[_systemctl_switch-root] )) || _systemctl_switch-root() { - _files -} + _files + } # no systemctl completion for: # [STANDALONE]='daemon-reexec daemon-reload default @@ -328,57 +328,57 @@ done # list-unit-files poweroff reboot rescue show-environment' (( $+functions[_systemctl_caching_policy] )) || -_systemctl_caching_policy() + _systemctl_caching_policy() { - local _sysunits - local -a oldcache + local _sysunits + local -a oldcache - # rebuild if cache is more than a day old - oldcache=( "$1"(mh+1) ) - (( $#oldcache )) && return 0 + # rebuild if cache is more than a day old + oldcache=( "$1"(mh+1) ) + (( $#oldcache )) && return 0 - _sysunits=(${${(f)"$(__systemctl --all)"}%% *}) + _sysunits=(${${(f)"$(__systemctl --all)"}%% *}) - if (( $#_sysunits )); then - for unit in $_sysunits; do - [[ "$unit" -nt "$1" ]] && return 0 - done - fi + if (( $#_sysunits )); then + for unit in $_sysunits; do + [[ "$unit" -nt "$1" ]] && return 0 + done + fi - return 1 + return 1 } (( $+functions[_systemctl_unit_states] )) || -_systemctl_unit_states() { - local -a _states - _states=("${(fo)$(__systemctl --state=help)}") - _values -s , "${_states[@]}" -} + _systemctl_unit_states() { + local -a _states + _states=("${(fo)$(__systemctl --state=help)}") + _values -s , "${_states[@]}" + } (( $+functions[_systemctl_unit_types] )) || -_systemctl_unit_types() { - local -a _types - _types=("${(fo)$(__systemctl -t help)}") - _values -s , "${_types[@]}" -} + _systemctl_unit_types() { + local -a _types + _types=("${(fo)$(__systemctl -t help)}") + _values -s , "${_types[@]}" + } (( $+functions[_systemctl_unit_properties] )) || -_systemctl_unit_properties() { - if ( [[ ${+_sys_all_properties} -eq 0 ]] || _cache_invalid SYS_ALL_PROPERTIES$_sys_service_mgr ) || - ! _retrieve_cache SYS_ALL_PROPERTIES$_sys_service_mgr; - then - _sys_all_properties=( ${${(M)${(f)"$(@rootlibexecdir@/systemd --dump-bus-properties)"}}} ) - _store_cache SYS_ALL_PROPERTIES$_sys_service_mgr _sys_all_properties - fi - _values -s , "${_sys_all_properties[@]}" -} + _systemctl_unit_properties() { + if ( [[ ${+_sys_all_properties} -eq 0 ]] || _cache_invalid SYS_ALL_PROPERTIES$_sys_service_mgr ) || + ! _retrieve_cache SYS_ALL_PROPERTIES$_sys_service_mgr; + then + _sys_all_properties=( ${${(M)${(f)"$(@rootlibexecdir@/systemd --dump-bus-properties)"}}} ) + _store_cache SYS_ALL_PROPERTIES$_sys_service_mgr _sys_all_properties + fi + _values -s , "${_sys_all_properties[@]}" + } (( $+functions[_systemctl_job_modes] )) || -_systemctl_job_modes() { - local -a _modes - _modes=(fail replace replace-irreversibly isolate ignore-dependencies ignore-requirements flush) - _values -s , "${_modes[@]}" -} + _systemctl_job_modes() { + local -a _modes + _modes=(fail replace replace-irreversibly isolate ignore-dependencies ignore-requirements flush) + _values -s , "${_modes[@]}" + } # Build arguments for "systemctl" to be used in completion. local -a _modes; _modes=("--user" "--system") diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd index ccac889244..cd674a71ea 100644 --- a/shell-completion/zsh/_systemd +++ b/shell-completion/zsh/_systemd @@ -11,7 +11,7 @@ case "$service" in '--no-tty[Ask question via agent even on TTY]' \ '--accept-cached[Accept cached passwords]' \ '--multiple[List multiple passwords if available]' - ;; + ;; systemd-cat) _arguments \ {-h,--help}'[Show this help]' \ @@ -20,7 +20,7 @@ case "$service" in {-p+,--priority=}'[Set priority value.]:value:({0..7})' \ '--level-prefix=[Control whether level prefix shall be parsed.]:boolean:(1 0)' \ ':Message' - ;; + ;; systemd-cgls) _arguments \ {-h,--help}'[Show this help]' \ @@ -29,7 +29,7 @@ case "$service" in {-a,--all}'[Show all groups, including empty]' \ '-k[Include kernel threads in output]' \ ':cgroups:(cpuset cpu cpuacct memory devices freezer blkio)' - ;; + ;; systemd-cgtop) _arguments \ {-h,--help}'[Show this help]' \ @@ -43,7 +43,7 @@ case "$service" in {-n+,--iterations=}'[Run for N iterations before exiting]:number of iterations:' \ {-b,--batch}'[Run in batch mode, accepting no input]' \ '--depth=[Maximum traversal depth]:maximum depth:' - ;; + ;; systemd-detect-virt) _arguments \ {-h,--help}'[Show this help]' \ @@ -51,12 +51,12 @@ case "$service" in {-c,--container}'[Only detect whether we are run in a container]' \ {-v,--vm}'[Only detect whether we are run in a VM]' \ {-q,--quiet}"[Don't output anything, just set return value]" - ;; + ;; systemd-machine-id-setup) _arguments \ {-h,--help}'[Show this help]' \ '--version[Show package version]' - ;; + ;; systemd-notify) _arguments \ {-h,--help}'[Show this help]' \ @@ -65,7 +65,7 @@ case "$service" in '--pid=[Inform the init system about the main PID of the daemon]:daemon main PID:_pids' \ '--status=[Send a free-form status string for the daemon to the init systemd]:status string:' \ '--booted[Returns 0 if the system was booted up with systemd]' - ;; + ;; systemd-tty-ask-password-agent) _arguments \ {-h,--help}'[Prints a short help text and exits.]' \ @@ -76,8 +76,6 @@ case "$service" in '--wall[Forward password requests to wall(1).]' \ '--plymouth[Ask question with plymouth(8).]' \ '--console[Ask question on /dev/console.]' - ;; + ;; *) _message 'eh?' ;; esac - -#vim: set ft=zsh sw=4 ts=4 et diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze index 64d418e643..8a5fbb5124 100644 --- a/shell-completion/zsh/_systemd-analyze +++ b/shell-completion/zsh/_systemd-analyze @@ -2,67 +2,67 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemd-analyze_log-level] )) || -_systemd-analyze_log-level() { - local -a _levels - _levels=(debug info notice warning err crit alert emerg) - _describe -t level 'logging level' _levels || compadd "$@" -} + _systemd-analyze_log-level() { + local -a _levels + _levels=(debug info notice warning err crit alert emerg) + _describe -t level 'logging level' _levels || compadd "$@" + } (( $+functions[_systemd-analyze_log-target] )) || -_systemd-analyze_log-target() { - local -a _targets - _targets=(console journal kmsg journal-or-kmsg null) - _describe -t target 'logging target' _targets || compadd "$@" -} + _systemd-analyze_log-target() { + local -a _targets + _targets=(console journal kmsg journal-or-kmsg null) + _describe -t target 'logging target' _targets || compadd "$@" + } (( $+functions[_systemd-analyze_verify] )) || -_systemd-analyze_verify() { - _sd_unit_files -} + _systemd-analyze_verify() { + _sd_unit_files + } (( $+functions[_systemd-analyze_service-watchdogs] )) || -_systemd-analyze_service-watchdogs() { - local -a _states - _states=(on off) - _describe -t state 'state' _states || compadd "$@" -} + _systemd-analyze_service-watchdogs() { + local -a _states + _states=(on off) + _describe -t state 'state' _states || compadd "$@" + } (( $+functions[_systemd-analyze_commands] )) || -_systemd-analyze_commands(){ - local -a _systemd_analyze_cmds - # Descriptions taken from systemd-analyze --help. - _systemd_analyze_cmds=( - 'time:Print time spent in the kernel before reaching userspace' - 'blame:Print list of running units ordered by time to init' - 'critical-chain:Print a tree of the time critical chain of units' - 'plot:Output SVG graphic showing service initialization' - 'dot:Dump dependency graph (in dot(1) format)' - 'dump:Dump server status' - 'unit-paths:List unit load paths' - 'log-level:Get/set systemd log threshold' - 'log-target:Get/set systemd log target' - 'service-watchdogs:Get/set service watchdog status' - 'syscall-filter:List syscalls in seccomp filter' - 'verify:Check unit files for correctness' - 'calendar:Validate repetitive calendar time events' - ) + _systemd-analyze_commands(){ + local -a _systemd_analyze_cmds + # Descriptions taken from systemd-analyze --help. + _systemd_analyze_cmds=( + 'time:Print time spent in the kernel before reaching userspace' + 'blame:Print list of running units ordered by time to init' + 'critical-chain:Print a tree of the time critical chain of units' + 'plot:Output SVG graphic showing service initialization' + 'dot:Dump dependency graph (in dot(1) format)' + 'dump:Dump server status' + 'unit-paths:List unit load paths' + 'log-level:Get/set systemd log threshold' + 'log-target:Get/set systemd log target' + 'service-watchdogs:Get/set service watchdog status' + 'syscall-filter:List syscalls in seccomp filter' + 'verify:Check unit files for correctness' + 'calendar:Validate repetitive calendar time events' + ) - if (( CURRENT == 1 )); then - _describe "options" _systemd_analyze_cmds - else - local curcontext="$curcontext" - cmd="${${_systemd_analyze_cmds[(r)$words[1]:*]%%:*}}" - if (( $#cmd )); then - if (( $+functions[_systemd-analyze_$cmd] )) && (( CURRENT == 2 )); then - _systemd-analyze_$cmd + if (( CURRENT == 1 )); then + _describe "options" _systemd_analyze_cmds + else + local curcontext="$curcontext" + cmd="${${_systemd_analyze_cmds[(r)$words[1]:*]%%:*}}" + if (( $#cmd )); then + if (( $+functions[_systemd-analyze_$cmd] )) && (( CURRENT == 2 )); then + _systemd-analyze_$cmd + else + _message "no more options" + fi else - _message "no more options" + _message "unknown systemd-analyze command: $words[1]" fi - else - _message "unknown systemd-analyze command: $words[1]" fi - fi -} + } _arguments \ {-h,--help}'[Show help text]' \ diff --git a/shell-completion/zsh/_systemd-resolve b/shell-completion/zsh/_systemd-resolve index c4664422ec..07f6ad26b5 100644 --- a/shell-completion/zsh/_systemd-resolve +++ b/shell-completion/zsh/_systemd-resolve @@ -1,6 +1,5 @@ #compdef systemd-resolve # SPDX-License-Identifier: LGPL-2.1+ - # # This file is part of systemd. # @@ -18,32 +17,32 @@ # along with systemd; If not, see <http://www.gnu.org/licenses/>. (( $+functions[_systemd-resolve_protocols] )) || -_systemd-resolve_protocols() { - local -a _protocol - _protocol=( $(_call_program protocol ${service} --legend=no --protocol help; echo help) ) - _values 'protocol' "$_protocol[@]" -} + _systemd-resolve_protocols() { + local -a _protocol + _protocol=( $(_call_program protocol ${service} --legend=no --protocol help; echo help) ) + _values 'protocol' "$_protocol[@]" + } (( $+functions[_systemd-resolve_types] )) || -_systemd-resolve_types() { - local -a _type - _type=( $(_call_program type ${service} --legend=no --type help; echo help) ) - _values 'type' "$_type[@]" -} + _systemd-resolve_types() { + local -a _type + _type=( $(_call_program type ${service} --legend=no --type help; echo help) ) + _values 'type' "$_type[@]" + } (( $+functions[_systemd-resolve_classes] )) || -_systemd-resolve_classes() { - local -a _class - _class=( $(_call_program class ${service} --legend=no --class help; echo help) ) - _values 'class' "$_class[@]" -} + _systemd-resolve_classes() { + local -a _class + _class=( $(_call_program class ${service} --legend=no --class help; echo help) ) + _values 'class' "$_class[@]" + } (( $+functions[_systemd-resolve_none] )) || -_systemd-resolve_none() { - _alternative : \ - 'domain:DNS address:' \ - 'address:email address:' -} + _systemd-resolve_none() { + _alternative : \ + 'domain:DNS address:' \ + 'address:email address:' + } _arguments \ {-h,--help}'[Print a short help text and exit]' \ diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run index 81017180a7..2e0b3d2cfd 100644 --- a/shell-completion/zsh/_systemd-run +++ b/shell-completion/zsh/_systemd-run @@ -3,34 +3,34 @@ # @todo _systemctl has a helper with the same name, so we must redefine __systemctl() { - local -a _modes - _modes=("--user" "--system") - systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null + local -a _modes + _modes=("--user" "--system") + systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null } (( $+functions[__systemd-run_get_slices] )) || -__systemd-run_get_slices () { + __systemd-run_get_slices () { __systemctl list-units --all -t slice \ - | { while read -r a b; do echo $a; done; }; -} + | { while read -r a b; do echo $a; done; }; + } (( $+functions[__systemd-run_slices] )) || -__systemd-run_slices () { + __systemd-run_slices () { local -a _slices _slices=(${(fo)"$(__systemd-run_get_slices)"}) typeset -U _slices _describe 'slices' _slices -} + } _arguments \ - {-h,--help}'[Show help message]' \ - '--version[Show package version]' \ - '--user[Run as user unit]' \ - {-H+,--host=}'[Operate on remote host]:[user@]host:_sd_hosts_or_user_at_host' \ - {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \ - '--scope[Run this as scope rather than service]' \ - '--unit=[Run under the specified unit name]:unit name' \ - {-p+,--property=}'[Set unit property]:NAME=VALUE:(( \ + {-h,--help}'[Show help message]' \ + '--version[Show package version]' \ + '--user[Run as user unit]' \ + {-H+,--host=}'[Operate on remote host]:[user@]host:_sd_hosts_or_user_at_host' \ + {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \ + '--scope[Run this as scope rather than service]' \ + '--unit=[Run under the specified unit name]:unit name' \ + {-p+,--property=}'[Set unit property]:NAME=VALUE:(( \ CPUAccounting= MemoryAccounting= BlockIOAccounting= SendSIGHUP= \ SendSIGKILL= MemoryLimit= CPUShares= BlockIOWeight= User= Group= \ DevicePolicy= KillMode= DeviceAllow= BlockIOReadBandwidth= \ @@ -45,21 +45,21 @@ _arguments \ ReadOnlyPaths= InaccessiblePaths= EnvironmentFile= \ ProtectSystem= ProtectHome= RuntimeDirectory= PassEnvironment= \ ))' \ - '--description=[Description for unit]:description' \ - '--slice=[Run in the specified slice]:slices:__systemd-run_slices' \ - {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \ - '--send-sighup[Send SIGHUP when terminating]' \ - '--service-type=[Service type]:type:(simple forking oneshot dbus notify idle)' \ - '--uid=[Run as system user]:user:_users' \ - '--gid=[Run as system group]:group:_groups' \ - '--nice=[Nice level]:nice level' \ - '--setenv=[Set environment]:NAME=VALUE' \ - '--on-active=[Run after SEC seconds]:SEC' \ - '--on-boot=[Run SEC seconds after machine was booted up]:SEC' \ - '--on-startup=[Run SEC seconds after systemd was first started]:SEC' \ - '--on-unit-active=[Run SEC seconds after the last activation]:SEC' \ - '--on-unit-inactive=[Run SEC seconds after the last deactivation]:SEC' \ - '--on-calendar=[Realtime timer]:SPEC' \ - '--timer-property=[Set timer unit property]:NAME=VALUE' \ - '--wait=[Wait until service stopped again]' \ - '*::command:_command' + '--description=[Description for unit]:description' \ + '--slice=[Run in the specified slice]:slices:__systemd-run_slices' \ + {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \ + '--send-sighup[Send SIGHUP when terminating]' \ + '--service-type=[Service type]:type:(simple forking oneshot dbus notify idle)' \ + '--uid=[Run as system user]:user:_users' \ + '--gid=[Run as system group]:group:_groups' \ + '--nice=[Nice level]:nice level' \ + '--setenv=[Set environment]:NAME=VALUE' \ + '--on-active=[Run after SEC seconds]:SEC' \ + '--on-boot=[Run SEC seconds after machine was booted up]:SEC' \ + '--on-startup=[Run SEC seconds after systemd was first started]:SEC' \ + '--on-unit-active=[Run SEC seconds after the last activation]:SEC' \ + '--on-unit-inactive=[Run SEC seconds after the last deactivation]:SEC' \ + '--on-calendar=[Realtime timer]:SPEC' \ + '--timer-property=[Set timer unit property]:NAME=VALUE' \ + '--wait=[Wait until service stopped again]' \ + '*::command:_command' diff --git a/shell-completion/zsh/_udevadm b/shell-completion/zsh/_udevadm index 020759b006..eb133a42a6 100644 --- a/shell-completion/zsh/_udevadm +++ b/shell-completion/zsh/_udevadm @@ -142,7 +142,6 @@ _udevadm_commands(){ fi } - _arguments \ '--debug[Print debug messages to stderr]' \ '--version[Print version number]' \ |