diff --git a/data/zsh-completion/_upower b/data/zsh-completion/_upower new file mode 100644 index 0000000..230a055 --- /dev/null +++ b/data/zsh-completion/_upower @@ -0,0 +1,21 @@ +#compdef upower +_enumerate_objects() { + local expl + local -a objects + objects=( ${(f)"$( + _call_program upower-enumerate-objects \ + upower -e + )"} ) + _wanted objects expl "object path" \ + compadd -a objects -d objects +} + +_arguments \ + "(--enumerate -e)"{--enumerate,-e}"[Enumerate objects paths for devices]" \ + "(--dump -d)"{--dump,-d}"[Dump all parameters for all objects]" \ + "(--monitor -m)"{--monitor,-m}"[Monitor activity from the power daemon]" \ + "--monitor-detail""[Monitor with detail]" \ + "(--show-info -i)"{--show-info,-i}"[Show information about object path]"":::_enumerate_objects" \ + "(--version -v)"{--version,-v}"[Print version of client and daemon"] \ + +compdef _upower upower diff --git a/data/zsh-completion/meson.build b/data/zsh-completion/meson.build new file mode 100644 index 0000000..6e065db --- /dev/null +++ b/data/zsh-completion/meson.build @@ -0,0 +1,12 @@ +zshcompletiondir = get_option('zshcompletiondir') +if zshcompletiondir == '' + zshcompletiondir = get_option('datadir') / 'zsh' / 'site-functions' +endif + +if zshcompletiondir != 'no' + install_data( + '_upower', + install_dir: zshcompletiondir, + install_mode: 'rw-r--r--', + ) +endif diff --git a/meson.build b/meson.build index aff36e4..0f4baa8 100644 --- a/meson.build +++ b/meson.build @@ -138,6 +138,7 @@ subdir('libupower-glib') subdir('src') subdir('tools') subdir('doc') +subdir('data/zsh-completion') subdir('policy') pkgconfig = import('pkgconfig') diff --git a/meson_options.txt b/meson_options.txt index 82b6af0..59c98ef 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -40,3 +40,7 @@ option('polkit', type: 'feature', value: 'auto', description: 'PolKit support in daemon') +option('zshcompletiondir', + type: 'string', + value: '', + description: 'Directory for zsh completion scripts ["no" disables]')