diff options
Diffstat (limited to 'dist/comp/_hakurei')
| -rw-r--r-- | dist/comp/_hakurei | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/dist/comp/_hakurei b/dist/comp/_hakurei new file mode 100644 index 00000000..a8554268 --- /dev/null +++ b/dist/comp/_hakurei @@ -0,0 +1,82 @@ +#compdef hakurei + +_hakurei_app() { + __hakurei_files + return $? +} + +_hakurei_run() { + _arguments \ + '--id[Reverse-DNS style Application identifier, leave empty to inherit instance identifier]:id' \ + '-a[Application identity]: :_numbers' \ + '-g[Groups inherited by all container processes]: :_groups' \ + '-d[Container home directory]: :_files -/' \ + '-u[Passwd user name within sandbox]: :_users' \ + '--wayland[Enable connection to Wayland via security-context-v1]' \ + '-X[Enable direct connection to X11]' \ + '--dbus[Enable proxied connection to D-Bus]' \ + '--pulse[Enable direct connection to PulseAudio]' \ + '--dbus-config[Path to session bus proxy config file]: :_files -g "*.json"' \ + '--dbus-system[Path to system bus proxy config file]: :_files -g "*.json"' \ + '--mpris[Allow owning MPRIS D-Bus path]' \ + '--dbus-log[Force buffered logging in the D-Bus proxy]' +} + +_hakurei_ps() { + _arguments \ + '--short[List instances only]' +} + +_hakurei_show() { + _alternative \ + 'instances:domains:__hakurei_instances' \ + 'files:files:__hakurei_files' +} + +__hakurei_files() { + _files -g "*.(json|hakurei)" + return $? +} + +__hakurei_instances() { + local -a out + shift -p + out=( ${(f)"$(_call_program commands hakurei ps --short 2>&1)"} ) + if (( $#out == 0 )); then + _message "No active instances" + else + _describe "active instances" out + fi + return $? +} + +(( $+functions[_hakurei_commands] )) || _hakurei_commands() +{ + local -a _hakurei_cmds + _hakurei_cmds=( + "app:Load app from configuration file" + "run:Configure and start a permissive default sandbox" + "show:Show live or local app configuration" + "ps:List active instances" + "version:Display version information" + "license:Show full license text" + "template:Produce a config template" + "help:Show help message" + ) + if (( CURRENT == 1 )); then + _describe -t commands 'action' _hakurei_cmds || compadd "$@" + else + local curcontext="$curcontext" + cmd="${${_hakurei_cmds[(r)$words[1]:*]%%:*}}" + if (( $+functions[_hakurei_$cmd] )); then + _hakurei_$cmd + else + _message "no more options" + fi + fi +} + +_arguments -C \ + '-v[Increase log verbosity]' \ + '--json[Serialise output in JSON when applicable]' \ + '*::hakurei command:_hakurei_commands'
\ No newline at end of file |
