aboutsummaryrefslogtreecommitdiffhomepage
path: root/dist/comp/_hakurei
diff options
context:
space:
mode:
Diffstat (limited to 'dist/comp/_hakurei')
-rw-r--r--dist/comp/_hakurei82
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