summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Meta/ShellCompletions/zsh/_serenity63
2 files changed, 64 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 078038e399..b5260309e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
!Makefile
!LICENSE
!Base/**
+!Meta/ShellCompletions/**
*.o
*.ao
diff --git a/Meta/ShellCompletions/zsh/_serenity b/Meta/ShellCompletions/zsh/_serenity
new file mode 100644
index 0000000000..880fd29fb0
--- /dev/null
+++ b/Meta/ShellCompletions/zsh/_serenity
@@ -0,0 +1,63 @@
+#compdef serenity serenity.sh
+
+_serenity() {
+ local args
+ args=(
+ '1:command:->commands'
+ '2:target:->targets'
+ '*:: :->args'
+ )
+
+ local commands
+ commands=(
+ 'build'
+ 'install'
+ 'image'
+ 'run'
+ 'gdb'
+ 'test'
+ 'delete'
+ 'recreate'
+ 'rebuild'
+ 'kaddr2line'
+ 'addr2line'
+ 'rebuild-toolchain'
+ 'rebuild-world'
+ )
+
+ local targets
+ targets=(
+ 'i686:Target i686 (default)'
+ 'x86_64:Target x86_64'
+ 'lagom:Target host machine'
+ )
+
+ _arguments -C -S "$args[@]"
+
+ local command
+ command="$line[1]"
+
+ local target
+ target="$line[2]"
+
+ case "$state" in
+ commands)
+ _describe 'command' commands
+ ;;
+ targets)
+ case "$command" in
+ install|image|kaddr2line|rebuild-toolchain|rebuild-world)
+ # lagom target is not supported for these, remove from targets
+ targets[$targets[(i)lagom]]=()
+ ;;
+ esac
+ _describe 'target' targets
+ ;;
+ args)
+ ;;
+ esac
+
+ return 0
+}
+
+_serenity