chiark / gitweb /
shell-completion: work on session shell is --user is used
[elogind.git] / shell-completion / systemd-zsh-completion.zsh
index ee68ac75768b78cc8cbc239bdfe616cd6a76b314..46a6a1900c753a8dbacda11204412e5153d0ac64 100644 (file)
@@ -27,8 +27,6 @@ _ctls()
                 '--no-legend[Do not print a legend, i.e. the column headers and the footer with hints]' \
                 '--no-pager[Do not pipe output into a pager]' \
                 '--no-ask-password[Do not ask for system passwords]' \
-                '--order[When generating graph for dot, show only order]' \
-                '--require[When generating graph for dot, show only requirement]' \
                 '--system[Connect to system manager]' \
                 '--user[Connect to user service manager]' \
                 '--global[Enable/disable unit files globally]' \
@@ -72,6 +70,7 @@ _ctls()
                 {-c,--cursor=}'[Start showing entries from specified cursor]:cursors:_journal_fields __CURSORS' \
                 {-b,--this-boot}'[Show data only from current boot]' \
                 {-u,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \
+                '--user-unit[Show data only from the specified user session unit]:units:_journal_fields _SYSTEMD_USER_UNIT' \
                 {-p,--priority=}'[Show only messages within the specified priority range]:priority:_journal_fields PRIORITY' \
                 {-f,--follow}'[Follow journal]' \
                 {-n,--lines=}'[Number of journal entries to show]:integer' \
@@ -95,6 +94,7 @@ _ctls()
                 '--verify[Verify journal file consistency]' \
                 '--list-catalog[List messages in catalog]' \
                 '--update-catalog[Update binary catalog database]' \
+                '*::default: _journal_none'
         ;;
         localectl)
             _arguments \
@@ -136,6 +136,8 @@ _ctls()
             _arguments \
                 {-h,--help}'[Show help text.]' \
                 '--user[Shows performance data of user sessions instead of the system manager.]' \
+                '--order[When generating graph for dot, show only order]' \
+                '--require[When generating graph for dot, show only requirement]' \
                 '*::systemd-analyze commands:_systemd_analyze_command'
         ;;
         systemd-ask-password)
@@ -271,7 +273,7 @@ _systemd-nspawn(){
 }
 
 _systemd_inhibit_command(){
-    if (( CURRENT == 1 )); then 
+    if (( CURRENT == 1 )); then
         compset -q
         _normal
     else
@@ -293,6 +295,7 @@ _systemd_analyze_command(){
         'time:Print the time taken to start'
         'blame:prints a list of all running units, ordered by the time they took to initialize'
         'plot:prints an SVG graphic detailing which system services have been started at what time'
+        'dot:Dump dependency graph for dot(1)'
     )
 
     if (( CURRENT == 1 )); then
@@ -314,7 +317,7 @@ _outputmodes() {
     _output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
     _describe -t output 'output mode' _output_opts || compadd "$@"
 }
-        
+
 
 (( $+functions[_systemctl_command] )) || _systemctl_command()
 {
@@ -335,6 +338,7 @@ _outputmodes() {
     "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"
     "reset-failed:Reset failed state for all, one, or more units"
@@ -351,7 +355,6 @@ _outputmodes() {
     "list-jobs:List jobs"
     "cancel:Cancel all, one, or more jobs"
     "dump:Dump server status"
-    "dot:Dump dependency graph for dot(1)"
     "snapshot:Create a snapshot"
     "delete:Remove one or more snapshots"
     "show-environment:Dump environment"
@@ -401,7 +404,9 @@ _outputmodes() {
 
 __systemctl()
 {
-  systemctl --full --no-legend --no-pager "$@"
+  local -a _modes
+  _modes=("--user" "--system")
+  systemctl ${words:*_modes} --full --no-legend --no-pager "$@"
 }
 
 
@@ -457,7 +462,7 @@ _systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files
 _systemctl_masked_units()  {_sys_masked_units=(  $(__systemctl list-unit-files     | { while read a b; do [[ $b == "masked" ]] && echo "$a"; done; }) )}
 
 # Completion functions for ALL_UNITS
-for fun in is-active is-enabled status show mask preset ; do
+for fun in is-active is-failed is-enabled status show mask preset ; do
   (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
   {
     _systemctl_really_all_units
@@ -553,7 +558,7 @@ done
 (( $+functions[_systemctl_delete] )) || _systemctl_delete()
 {
   compadd "$@" - $(__systemctl list-units --type snapshot --all \
-    | cut -d' ' -f1  2>/dev/null ) || _message "no snampshot found"
+    | cut -d' ' -f1  2>/dev/null ) || _message "no snapshot found"
 }
 
 # Completion functions for ENVS
@@ -574,7 +579,7 @@ done
 (( $+functions[_systemctl_link] )) || _systemctl_link() { _files }
 
 # no systemctl completion for:
-#    [STANDALONE]='daemon-reexec daemon-reload default dot dump
+#    [STANDALONE]='daemon-reexec daemon-reload default dump
 #                  emergency exit halt kexec list-jobs list-units
 #                  list-unit-files poweroff reboot rescue show-environment'
 #         [NAME]='snapshot load'
@@ -606,6 +611,7 @@ _list_fields() {
                     _{P,U,G}ID _COMM _EXE _CMDLINE
                     _AUDIT_{SESSION,LOGINUID}
                     _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID}
+                    _SYSTEMD_USER_UNIT
                     _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP
                     _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT
                     _KERNEL_{DEVICE,SUBSYSTEM}
@@ -614,10 +620,19 @@ _list_fields() {
     _describe 'possible fields' journal_fields
 }
 
+_journal_none() {
+    local -a _commands _files
+    _commands=( ${(f)"$(_call_program commands "$service" -F _EXE 2>/dev/null)"} )
+    _alternative : \
+        'files:/dev files:_files -W /dev -P /dev/' \
+        "commands:commands:($_commands[@])" \
+        'fields:fields:_list_fields'
+}
+
 _journal_fields() {
     local -a _fields cmd
     cmd=("journalctl" "-F ${@[-1]}" "2>/dev/null" )
-    _fields=( ${(f)"$(_call_program fields $cmd[@])"} ) 
+    _fields=( ${(f)"$(_call_program fields $cmd[@])"} )
     typeset -U _fields
     _describe 'possible values' _fields
 }
@@ -774,8 +789,8 @@ _localectl_set-x11-keymap() {
         #_model=( ${(f)"$(echo $_file[2] | awk '/^  / {print $1}')"} )
         #_variant=( ${(f)"$(echo $_file[3] | awk '/^  / {print $1}')"} )
         #_options=( ${(f)"$(echo ${_file[4]//:/\\:} | awk '/^  / {print $1}')"} )
-        
-        case $CURRENT in 
+
+        case $CURRENT in
             2) _describe layouts _layout ;;
             3) _describe models _model;;
             4) _describe variants _variant;;
@@ -942,7 +957,7 @@ _udevadm_control(){
         '--timeout=[The maximum number of seconds to wait for a reply from systemd-udevd.]' \
         '--help[Print help text.]'
 }
+
 _udevadm_monitor(){
     _arguments \
         '--kernel[Print the kernel uevents.]' \
@@ -965,7 +980,7 @@ _udevadm_test-builtin(){
     if (( CURRENT == 2 )); then
     _arguments \
         '--help[Print help text]' \
-        '*::builtins:(blkid btrfs firmware hwdb input_id kmod path_id usb_id uaccess)'
+        '*::builtins:(blkid btrfs hwdb input_id kmod path_id usb_id uaccess)'
     elif  (( CURRENT == 3 )); then
         _arguments \
             '--help[Print help text]' \