diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze index f6dc972f031..7a1104c0ad9 100644 --- a/shell-completion/bash/systemd-analyze +++ b/shell-completion/bash/systemd-analyze @@ -30,6 +30,11 @@ __get_machines() { machinectl list --full --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } +__get_units_all() { + systemctl list-units --no-legend --no-pager --plain --all | \ + { while read -r a b c; do echo " $a"; done } +} + __get_services() { systemctl list-units --no-legend --no-pager --plain -t service --all $1 | \ { while read -r a b c; do [[ $b == "loaded" ]]; echo " $a"; done } @@ -111,6 +116,8 @@ _systemd_analyze() { elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then if [[ $cur = -* ]]; then comps='--help --version --system --user --fuzz --no-pager' + else + comps=$( __get_units_all ) fi elif __contains_word "$verb" ${VERBS[DOT]}; then diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze index 9c33d73f981..2ce8a3a0888 100644 --- a/shell-completion/zsh/_systemd-analyze +++ b/shell-completion/zsh/_systemd-analyze @@ -11,6 +11,16 @@ _files -W '(/run/systemd/ /etc/systemd/ /usr/lib/systemd/)' -P 'systemd/' } +(( $+functions[_systemd-analyze_critical-chain] )) || + _systemd-analyze_critical-chain() { + local -a _units + systemctl list-units --no-legend --no-pager --plain --all | + while read -r a b c; do + _units+=($a) + done + compadd -a _units + } + (( $+functions[_systemd-analyze_security] )) || _systemd-analyze_security() { _sd_unit_files