[arch-projects] [devtools] [PATCH 3/3] Add ZSH completion

Lukas Fleischer archlinux at cryptocrack.de
Fri Aug 19 02:52:22 EDT 2011


Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
 Makefile       |    2 +
 zsh_completion |   82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+), 0 deletions(-)
 create mode 100644 zsh_completion

diff --git a/Makefile b/Makefile
index 17f1aa6..0db3008 100644
--- a/Makefile
+++ b/Makefile
@@ -59,6 +59,7 @@ install:
 	for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
 	for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)$(PREFIX)/bin/$$l; done
 	install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools
+	install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
 	ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco
 
 uninstall:
@@ -68,6 +69,7 @@ uninstall:
 	for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
 	for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
 	rm $(DESTDIR)/etc/bash_completion.d/devtools
+	rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
 	rm -f $(DESTDIR)$(PREFIX)/bin/communityco
 
 dist:
diff --git a/zsh_completion b/zsh_completion
new file mode 100644
index 0000000..29c9657
--- /dev/null
+++ b/zsh_completion
@@ -0,0 +1,82 @@
+#compdef archbuild archco archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-i686-build=archbuild extra-x86_64-build=archbuild testing-i686-build=archbuild testing-x86_64-build=archbuild staging-i686-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild
+
+_arch=(i686 x86_64 any)
+
+_tags=(
+	core-i686 core-x86_64 core-any
+	extra-i686 extra-x86_64 extra-any
+	multilib-i686 multilib-x86_64 multilib-any
+	community-i686 community-x86_64 community-any
+	staging-i686 staging-x86_64 staging-any
+	testing-i686 testing-x86_64 testing-any
+	multilib-testing-i686 multilib-testing-x86_64 multilib-testing-any
+	community-staging-i686 community-staging-x86_64 community-staging-any
+	community-testing-i686 community-testing-x86_64 community-testing-any
+)
+
+_archbuild_args=(
+	'-c[Recreate the chroot before building]'
+	'-r[Create chroots in this directory]:base_dir:_files -/'
+)
+
+_archco_args=(
+	'*:packages:_devtools_completions_installed_packages'
+)
+
+_archrelease_args=(
+	"1:arch:($_tags[*])"
+)
+
+_archrm_args=(
+	'1:path:_files -/'
+)
+
+_commitpkg_args=(
+	"-a[Release to a specific architecture only]:arch:($_arch[*])"
+	'-l[Set bandwidth limit]:limit'
+	'1:commit_msg'
+)
+
+_finddeps_args=(
+	'1:packages:_devtools_completions_installed_packages'
+)
+
+_makechrootpkg_args=(
+	'-I[Install a package into the working copy]:target:_files -g "*.pkg.tar.*(.)"'
+	'-c[Clean the chroot before building]'
+	'-d[Add the package to a local db at /repo after building]'
+	'-h[Display usage]'
+	'-l[The directory to use as the working copy]:copy_dir:_files -/'
+	'-r[The chroot dir to use]:chroot_dir:_files -/'
+	'-u[Update the working copy of the chroot before building]'
+)
+
+_mkarchroot_args=(
+	'-r[Run a program within the context of the chroot]:app'
+	'-u[Update the chroot via pacman]'
+	'-f[Force overwrite of files in the working-dir]'
+	'-C[Location of a pacman config file]:pacman_config:_files'
+	'-M[Location of a makepkg config file]:makepkg_config:_files'
+	'-n[Do not copy config files into the chroot]'
+	'-c[Set pacman cache]:pacman_cache:_files -/'
+	'-h[Display usage]'
+)
+
+_rebuildpkgs_args=(
+	'1:chroot_dir:_files -/'
+	'*:packages:_devtools_completions_installed_packages'
+)
+
+_devtools_completions_installed_packages() {
+	local -a cmd packages packages_long
+	packages_long=(/var/lib/pacman/local/*(/))
+	packages=( ${${packages_long#/var/lib/pacman/local/}%-*-*} )
+	compadd "$@" -a packages
+}
+
+_devtools() {
+	local argname="_${service}_args[@]"
+	_arguments -s "${(P)argname}"
+}
+
+_devtools
-- 
1.7.6



More information about the arch-projects mailing list