[systemd-devel] [PATCH] zsh-completion: Move machine listing to autoload
William Giokas
1007380 at gmail.com
Thu Nov 7 07:43:18 PST 2013
Instead of having two different listings of machines, use an autoloaded
function that can be used by other shell completions in the future. It
will also allow editing a single file to change the way machinectl and
systemd-run completion for machines.
---
An extension of the previous zsh completion patch from Ronny Chevalier.
shell-completion/zsh/_machinectl | 7 +------
shell-completion/zsh/_sd_machines | 13 +++++++++++++
shell-completion/zsh/_systemd-run | 17 +----------------
3 files changed, 15 insertions(+), 22 deletions(-)
create mode 100644 shell-completion/zsh/_sd_machines
diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl
index 2e5e05c..026d74f 100644
--- a/shell-completion/zsh/_machinectl
+++ b/shell-completion/zsh/_machinectl
@@ -19,12 +19,7 @@
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
+ _sd_machines
esac
else
_message "no more options"
diff --git a/shell-completion/zsh/_sd_machines b/shell-completion/zsh/_sd_machines
new file mode 100644
index 0000000..1d64d13
--- /dev/null
+++ b/shell-completion/zsh/_sd_machines
@@ -0,0 +1,13 @@
+#autoload
+__get_machines () {
+ machinectl --full --no-pager list | {while read -r a b; do echo $a; done;};
+}
+
+local -a _machines
+_machines=("${(fo)$(__get_machines)}")
+typeset -U _machines
+if [[ -n "$_machines" ]]; then
+ _describe 'machines' _machines
+else
+ _message 'no machines'
+fi
diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run
index 4bfbd19..9bb7700 100644
--- a/shell-completion/zsh/_systemd-run
+++ b/shell-completion/zsh/_systemd-run
@@ -18,27 +18,12 @@ __slices () {
_describe 'slices' _slices
}
-__get_machines () {
- machinectl --full --no-pager list | {while read -r a b; do echo $a; done;};
-}
-
-__machines () {
- local -a _machines
- _machines=("${(fo)$(__get_machines)}")
- typeset -U _machines
- if [[ -n "$_machines" ]]; then
- _describe 'machines' _machines
- else
- _message 'no machines'
- fi
-}
-
_arguments \
{-h,--help}'[Show help message]' \
'--version[Show package version]' \
'--user[Run as user unit]' \
{-H+,--host=}'[Operate on remote host]:[user@]host:_sd_hosts_or_user_at_host' \
- {-M+,--machine=}'[Operate on local container]:machines:__machines' \
+ {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \
'--scope[Run this as scope rather than service]' \
'--unit=[Run under the specified unit name]:unit name' \
'--description=[Description for unit]:description' \
--
1.8.5.rc0
More information about the systemd-devel
mailing list