[arch-projects] [devtools] [PATCH v2] Add ZSH completion

Lukas Fleischer archlinux at cryptocrack.de
Thu Aug 25 06:50:30 EDT 2011


Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
* Contains alias for communityco.
* archco and communityco now invoke _*_all_packages() (which calls
  `pacman -Slq`) instead of _*_installed_packages().
* I merged the archrelease fix up into this one.
* Some minor cleanups.

 Makefile       |    2 +
 zsh_completion |   81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 83 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..b1d7d05
--- /dev/null
+++ b/zsh_completion
@@ -0,0 +1,81 @@
+#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 communityco=archco
+
+_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
+	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-i686 community-x86_64 community-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_all_packages'
+)
+
+_archrelease_args=(
+	"*: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_all_packages() {
+	typeset -U packages
+	packages=($(_call_program packages pacman -Sql))
+	compadd - "${(@)packages}"
+}
+
+_devtools() {
+	local argname="_${service}_args[@]"
+	_arguments -s "${(P)argname}"
+}
+
+_devtools
-- 
1.7.6



More information about the arch-projects mailing list