summaryrefslogtreecommitdiff
path: root/shell-completion/zsh/_systemd
blob: d0e1f3d4f91ec425d0746856f94547f64aff63f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tmpfiles systemd-tty-ask-password-agent machinectl

_ctls()
{
    local curcontext="$curcontext" state lstate line
    case "$service" in
        systemd-ask-password)
            _arguments \
                {-h,--help}'[Show this help]' \
                '--icon=[Icon name]' \
                '--timeout=[Timeout in sec]' \
                '--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]' \
                '--version[Show package version.]' \
                {-t,--identifier=}'[Set syslog identifier.]' \
                {-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]' \
                '--version[Show package version]' \
                '--no-pager[Do not pipe output into a pager]' \
                {-a,--all}'[Show all groups, including empty]' \
                '-k[Include kernel threads in output]' \
                ':cgroups:(cpuset cpu cpuacct memory devices freezer net_cls blkio)'
        ;;
        systemd-cgtop)
            _arguments \
                {-h,--help}'[Show this help]' \
                '--version[Print version and exit]' \
                '(-c -m -i -t)-p[Order by path]' \
                '(-c -p -m -i)-t[Order by number of tasks]' \
                '(-m -p -i -t)-c[Order by CPU load]' \
                '(-c -p -i -t)-m[Order by memory load]' \
                '(-c -m -p -t)-i[Order by IO load]' \
                {-d,--delay=}'[Specify delay]' \
                {-n,--iterations=}'[Run for N iterations before exiting]' \
                {-b,--batch}'[Run in batch mode, accepting no input]' \
                '--depth=[Maximum traversal depth]'
        ;;
        systemd-delta)
            _arguments \
                {-h,--help}'[Show this help]' \
                '--version[Show package version]' \
                '--no-pager[Do not pipe output into a pager]' \
                '--diff=[Show a diff when overridden files differ]:boolean:(1 0)' \
                {-t,--type=}'[Only display a selected set of override types]:types:(masked equivalent redirected overridden unchanged)' \
                ':SUFFIX:(tmpfiles.d sysctl.d systemd/system)'
        ;;
        systemd-detect-virt)
            _arguments \
                {-h,--help}'[Show this help]' \
                '--version[Show package version]' \
                {-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]' \
                '--version[Show package version]' \
                '--ready[Inform the init system about service start-up completion.]' \
                '--pid=[Inform the init system about the main PID of the daemon]' \
                '--status=[Send a free-form status string for the daemon to the init systemd]' \
                '--booted[Returns 0 if the system was booted up with systemd]' \
                '--readahead=[Controls disk read-ahead operations]:arguments:(cancel done noreply)'
        ;;
        systemd-tmpfiles)
            _arguments \
                '--create[Create, set ownership/permissions based on the config files.]' \
                '--clean[Clean up all files and directories with an age parameter configured.]' \
                '--remove[All files and directories marked with r, R in the configuration files are removed.]' \
                '--prefix=[Only apply rules that apply to paths with the specified prefix.]' \
                '--exclude-prefix=[Ignore rules that apply to paths with the specified prefix.]' \
                '--help[Prints a short help text and exits.]' \
                '*::files:_files'
        ;;
        systemd-tty-ask-password-agent)
            _arguments \
                {-h,--help}'[Prints a short help text and exits.]' \
                '--version[Prints a short version string and exits.]' \
                '--list[Lists all currently pending system password requests.]' \
                '--query[Process all currently pending system password requests by querying the user on the calling TTY.]' \
                '--watch[Continuously process password requests.]' \
                '--wall[Forward password requests to wall(1).]' \
                '--plymouth[Ask question with plymouth(8).]' \
                '--console[Ask question on /dev/console.]'
        ;;
        machinectl)
            _arguments \
                {-h,--help}'[Prints a short help text and exits.]' \
                '--version[Prints a short version string and exits.]' \
                {-p,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
                {-a,--all}'[Show all proerties]' \
                (-l,--full)'[Do not ellipsize cgroup members]' \
                '--no-pager[Do not pipe output into a pager]' \
                '--no-ask-password[Do not ask for system passwords]' \
                '--kill-who=[Who to send signal to]:killwho:(leader all)' \
                {-s,--signal=}'[Which signal to send]:signal:_signals' \
                {-H,--host=}'[Show information for remote host]:userathost:_hosts_or_user_at_host' \
                {-P,--privileged}'[Acquire privileges before execution]' \
                '*::machinectl command:_machinectl_command'
        ;;
        *) _message 'eh?' ;;
    esac
}

_hosts_or_user_at_host()
{
  _alternative \
    'users-hosts:: _user_at_host' \
    'hosts:: _hosts'
}

_outputmodes() {
    local -a _output_opts
    _output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
    _describe -t output 'output mode' _output_opts || compadd "$@"
}

(( $+functions[_machinectl_command] )) || _machinectl_command()
{
  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"
    "terminate:Terminate one or more VMs/containers"
    "kill:Send signal to process or a VM/container"
  )
  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
      case $cmd in
        list) msg="no options" ;;
        *)
          _machines=( "${(foa)$(machinectl list | awk '{print $1}')}" )
          if [[ -n "$_machines" ]]; then
            _describe 'machines' _machines
          else
            _message 'no machines'
          fi
      esac
    else
      _message "no more options"
    fi
  fi
}

_ctls "$@"

#vim: set ft=zsh sw=4 ts=4 et