aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/completions/systemctl.fish
diff options
context:
space:
mode:
authorGravatar Fabian Homborg <FHomborg@gmail.com>2015-02-19 14:21:36 +0100
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2015-03-06 23:05:24 -0800
commit388a8d09d80b8b7d1b6e63225d9deafc6d4f4660 (patch)
tree9b7ab8b395749c09cdf05a68654b584dc2b21017 /share/completions/systemctl.fish
parentb4aa2b7c2cdd640f4f5e1fb9efd37bb280573c89 (diff)
systemctl completions: Support command-after-options
This fixes completions for e.g. `systemctl --quiet status`
Diffstat (limited to 'share/completions/systemctl.fish')
-rw-r--r--share/completions/systemctl.fish48
1 files changed, 28 insertions, 20 deletions
diff --git a/share/completions/systemctl.fish b/share/completions/systemctl.fish
index c9b61908..bcb11a95 100644
--- a/share/completions/systemctl.fish
+++ b/share/completions/systemctl.fish
@@ -1,61 +1,69 @@
function __fish_systemctl_using_command
- set cmd (commandline -opc)
- if [ (count $cmd) -gt 1 ]
- if [ $argv[1] = $cmd[2] ]
- return 0
- end
- end
- return 1
+ set cmd (commandline -opc)
+ if [ (count $cmd) -gt 1 ]
+ if contains -- $argv $cmd
+ return 0
+ end
+ end
+ return 1
+end
+
+function __fish_systemctl_has_no_command
+ set cmd (commandline -opc)
+ set commands list-units list-sockets start stop reload restart try-restart reload-or-restart reload-or-try-restart \
+ isolate kill is-active is-failed status show get-cgroup-attr set-cgroup-attr unset-cgroup-attr set-cgroup help \
+ reset-failed list-unit-files enable disable is-enabled reenable preset mask unmask link load list-jobs cancel dump \
+ list-dependencies snapshot delete daemon-reload daemon-reexec show show-environment set-environment unset-environment \
+ default rescue emergency halt poweroff reboot kexec exit suspend hibernate hybrid-sleep switch-root
+ for word in $cmd
+ if contains -- $word $commands
+ return 1
+ end
+ end
+ return 0
end
# All systemctl commands
complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a 'list-units list-sockets start stop reload restart try-restart reload-or-restart reload-or-try-restart isolate kill is-active is-failed status show get-cgroup-attr set-cgroup-attr unset-cgroup-attr set-cgroup help reset-failed list-unit-files enable disable is-enabled reenable preset mask unmask link load list-jobs cancel dump list-dependencies snapshot delete daemon-reload daemon-reexec show show-environment set-environment unset-environment default rescue emergency halt poweroff reboot kexec exit suspend hibernate hybrid-sleep switch-root'
#### Units commands
-
# Start
-complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a start -d 'Start one or more units'
+complete -f -c systemctl -n "__fish_systemctl_has_no_command" -a start -d 'Start one or more units'
complete -f -c systemctl -n '__fish_systemctl_using_command start' -a '(__fish_systemctl_services)' -d 'Service'
complete -f -c systemctl -n '__fish_systemctl_using_command start' -a '(__fish_systemctl_sockets)' -d 'Socket'
complete -f -c systemctl -n '__fish_systemctl_using_command start' -a '(__fish_systemctl_mounts)' -d 'Mount'
complete -f -c systemctl -n '__fish_systemctl_using_command start' -a '(__fish_systemctl_service_paths)' -d 'Path'
-
# Stop
-complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a stop -d 'Stop one or more units'
+complete -f -c systemctl -n "__fish_systemctl_has_no_command" -a stop -d 'Stop one or more units'
complete -f -c systemctl -n '__fish_systemctl_using_command stop' -a '(__fish_systemctl_services)' -d 'Service'
complete -f -c systemctl -n '__fish_systemctl_using_command stop' -a '(__fish_systemctl_sockets)' -d 'Socket'
complete -f -c systemctl -n '__fish_systemctl_using_command stop' -a '(__fish_systemctl_mounts)' -d 'Mount'
complete -f -c systemctl -n '__fish_systemctl_using_command stop' -a '(__fish_systemctl_service_paths)' -d 'Path'
-
# Restart
-complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a restart -d 'Restart one or more units'
+complete -f -c systemctl -n "__fish_systemctl_has_no_command" -a restart -d 'Restart one or more units'
complete -f -c systemctl -n '__fish_systemctl_using_command restart' -a '(__fish_systemctl_services)' -d 'Service'
complete -f -c systemctl -n '__fish_systemctl_using_command restart' -a '(__fish_systemctl_sockets)' -d 'Socket'
complete -f -c systemctl -n '__fish_systemctl_using_command restart' -a '(__fish_systemctl_mounts)' -d 'Mount'
complete -f -c systemctl -n '__fish_systemctl_using_command restart' -a '(__fish_systemctl_service_paths)' -d 'Path'
-
# Status
-complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a status -d 'Runtime status about one or more units'
+complete -f -c systemctl -n "__fish_systemctl_has_no_command" -a status -d 'Runtime status about one or more units'
complete -f -c systemctl -n '__fish_systemctl_using_command status' -a '(__fish_systemctl_services)' -d 'Service'
complete -f -c systemctl -n '__fish_systemctl_using_command status' -a '(__fish_systemctl_sockets)' -d 'Socket'
complete -f -c systemctl -n '__fish_systemctl_using_command status' -a '(__fish_systemctl_mounts)' -d 'Mount'
complete -f -c systemctl -n '__fish_systemctl_using_command status' -a '(__fish_systemctl_service_paths)' -d 'Path'
-
# Enable
-complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a enable -d 'Enable one or more units'
+complete -f -c systemctl -n "__fish_systemctl_has_no_command" -a enable -d 'Enable one or more units'
complete -f -c systemctl -n '__fish_systemctl_using_command enable' -a '(__fish_systemctl_services)' -d 'Service'
complete -f -c systemctl -n '__fish_systemctl_using_command enable' -a '(__fish_systemctl_sockets)' -d 'Socket'
complete -f -c systemctl -n '__fish_systemctl_using_command enable' -a '(__fish_systemctl_mounts)' -d 'Mount'
complete -f -c systemctl -n '__fish_systemctl_using_command enable' -a '(__fish_systemctl_service_paths)' -d 'Path'
-
# Disable
-complete -f -c systemctl -n "test (count (commandline -poc)) = 1" -a disable -d 'Disable one or more units'
+complete -f -c systemctl -n "__fish_systemctl_has_no_command" -a disable -d 'Disable one or more units'
complete -f -c systemctl -n '__fish_systemctl_using_command disable' -a '(__fish_systemctl_services)' -d 'Service'
complete -f -c systemctl -n '__fish_systemctl_using_command disable' -a '(__fish_systemctl_sockets)' -d 'Socket'
complete -f -c systemctl -n '__fish_systemctl_using_command disable' -a '(__fish_systemctl_mounts)' -d 'Mount'
complete -f -c systemctl -n '__fish_systemctl_using_command disable' -a '(__fish_systemctl_service_paths)' -d 'Path'
-
complete -c systemctl -s t -l type -d 'List of unit types' -xa 'help service, mount, socket, target,'
complete -c systemctl -l state -d 'List of unit states' -xa 'LOAD, SUB, ACTIVE,'
complete -c systemctl -s p -l property -d 'Properties displayed in the "show" command'