]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shell-completion: add missing args to bash resolvectl
authorArthur Zamarin <arthurzam@gentoo.org>
Sat, 27 Apr 2024 19:00:18 +0000 (22:00 +0300)
committerArthur Zamarin <arthurzam@gentoo.org>
Wed, 1 May 2024 16:17:59 +0000 (19:17 +0300)
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
shell-completion/bash/resolvectl

index 1a5febe1e3eb1053396f427af4d5009740137d6f..344eaad9732a2531730ecc6ffc298586c4424796 100644 (file)
@@ -24,7 +24,7 @@ __contains_word () {
     done
 }
 
-__get_interfaces(){
+__get_interfaces() {
     local name
     for name in $(cd /sys/class/net && command ls); do
         [[ "$name" != "lo" ]] && echo "$name"
@@ -36,10 +36,10 @@ _resolvectl() {
     local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
     local -A OPTS=(
         [STANDALONE]='-h --help --version -4 -6 --legend=no --cname=no
-                      --validate=no --synthesize=no --cache=no --zone=no
+                      --validate=no --synthesize=no --cache=no --relax-single-label=no --zone=no
                       --trust-anchor=no --network=no --service-address=no
                       --service-txt=no --search=no --stale-data=no --no-pager'
-        [ARG]='-t --type -c --class -i --interface -p --protocol --raw'
+        [ARG]='-t --type -c --class -i --interface -p --protocol --raw --json'
     )
     local -A VERBS=(
         [DOMAIN]='query service openpgp'
@@ -50,7 +50,7 @@ _resolvectl() {
         [RESOLVE]='llmnr mdns'
         [DNSSEC]='dnssec'
         [DNSOVERTLS]='dnsovertls'
-        [STANDALONE]='statistics reset-statistics flush-caches reset-server-features show-cache'
+        [STANDALONE]='statistics reset-statistics flush-caches reset-server-features monitor show-cache show-server-state'
         [LOG_LEVEL]='log-level'
     )
     local -A ARGS=(
@@ -60,14 +60,13 @@ _resolvectl() {
         [DNSSEC]='yes no allow-downgrade'
         [DNSOVERTLS]='yes no opportunistic'
     )
-    local interfaces=$( __get_interfaces )
 
     if __contains_word "$prev" ${OPTS[ARG]}; then
         case $prev in
             --interface|-i)
-                comps="$interfaces"
+                comps=$( __get_interfaces )
                 ;;
-            --protocol|-p|--type|-t|--class|-c)
+            --protocol|-p|--type|-t|--class|-c|--json)
                 comps=$( resolvectl --legend=no "$prev" help; echo help )
                 ;;
             --raw)
@@ -98,7 +97,7 @@ _resolvectl() {
         comps=''
 
     elif __contains_word "$verb" ${VERBS[STATUS]}; then
-        comps="$interfaces"
+        comps=$( __get_interfaces )
 
     elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then
         comps='debug info notice warning err crit alert emerg'
@@ -118,6 +117,7 @@ _resolvectl() {
         fi
 
     elif __contains_word "$verb" ${VERBS[LINK]} ${VERBS[BOOLEAN]} ${VERBS[RESOLVE]} ${VERBS[DNSSEC]} ${VERBS[DNSOVERTLS]}; then
+        local interfaces=$( __get_interfaces )
         for ((i++; i < COMP_CWORD; i++)); do
             if __contains_word "${COMP_WORDS[i]}" $interfaces &&
                     ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then