On Fri, 19 Aug 2011 08:52:22 +0200, Lukas Fleischer wrote:
Signed-off-by: Lukas Fleischer <archlinux@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
I think communityco is missing here.
+_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' +)
We should do the same as bash completion does here. Call pacman -Slq; still not perfect but better than just complete to already 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
-- Pierre Schmitz, https://users.archlinux.de/~pierre