]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - shell-completion/zsh/_loginctl
Merge pull request #11827 from keszybz/pkgconfig-variables
[thirdparty/systemd.git] / shell-completion / zsh / _loginctl
index 1e2a4db2a0730d568f009a7ca7747b116ec58c96..44d6d08c9885f54c2a028e40a3ed7dcabe89d26b 100644 (file)
@@ -1,5 +1,7 @@
 #compdef loginctl
+# SPDX-License-Identifier: LGPL-2.1+
 
+(( $+functions[_loginctl_all_sessions] )) ||
 _loginctl_all_sessions() {
   local session description
   loginctl --no-legend list-sessions | while read -r session description; do
@@ -8,6 +10,7 @@ _loginctl_all_sessions() {
   done
 }
 
+(( $+functions[_loginctl_all_users] )) ||
 _loginctl_all_users() {
   local uid description
   loginctl --no-legend list-users | while read -r uid description; do
@@ -16,6 +19,7 @@ _loginctl_all_users() {
   done
 }
 
+(( $+functions[_loginctl_all_seats] )) ||
 _loginctl_all_seats() {
   local seat description
   loginctl --no-legend list-seats | while read -r seat description; do
@@ -37,7 +41,12 @@ for fun in session-status show-session activate lock-session unlock-session term
       _sys_all_sessions_descr[(i)$_ignore:*]=()
     done
 
-    _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@"
+    if zstyle -T ":completion:${curcontext}:systemd-sessions" verbose; then
+      _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
+    fi
   }
 done
 
@@ -56,8 +65,14 @@ for fun in user-status show-user enable-linger disable-linger terminate-user kil
       _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
-    _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@"
+    if zstyle -T ":completion:${curcontext}:users" verbose; then
+      _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
+    fi
   }
 done
 
@@ -72,7 +87,12 @@ done
     _sys_all_seats_descr[(i)$_ignore:*]=()
   done
 
-  _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@"
+  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()
@@ -90,7 +110,7 @@ done
 # no loginctl completion for:
 # [STANDALONE]='list-sessions list-users list-seats flush-devices'
 
-(( $+functions[_loginctl_command] )) || _loginctl_command()
+(( $+functions[_loginctl_commands] )) || _loginctl_commands()
 {
   local -a _loginctl_cmds
   _loginctl_cmds=(
@@ -153,4 +173,4 @@ _arguments -s \
     '--no-ask-password[Do not ask for system passwords]' \
     {-n+,--lines=}'[Number of journal entries to show]' \
     {-o+,--output=}'[Change journal output mode]:output modes:_sd_outputmodes' \
-    '*::loginctl command:_loginctl_command'
+    '*::loginctl command:_loginctl_commands'