summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2022-05-18 02:07:01 +0200
committerLevente Polyak <anthraxx@archlinux.org>2022-06-22 01:05:02 +0200
commitbb1a89a8372b5b8c5372578b2ffe4b7ff04f0843 (patch)
tree4b778ab2b2c8b973957abaa190ae2576dd7c67bd /contrib
parent225bac5a49374ef996d6f1072049776d79d3a5dd (diff)
downloaddevtools-bb1a89a8372b5b8c5372578b2ffe4b7ff04f0843.tar.xz
make: split out completion scripts from root worktree
Diffstat (limited to 'contrib')
-rw-r--r--contrib/completion/bash/devtools.in90
-rw-r--r--contrib/completion/zsh/_devtools.in129
2 files changed, 219 insertions, 0 deletions
diff --git a/contrib/completion/bash/devtools.in b/contrib/completion/bash/devtools.in
new file mode 100644
index 0000000..e7925b3
--- /dev/null
+++ b/contrib/completion/bash/devtools.in
@@ -0,0 +1,90 @@
+#!/hint/bash
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+_devtools_compgen() {
+ local i r
+ COMPREPLY=($(compgen -W '$*' -- "$cur"))
+ for ((i=1; i < ${#COMP_WORDS[@]}-1; i++)); do
+ for r in "${!COMPREPLY[@]}"; do
+ if [[ ${COMP_WORDS[i]} = "${COMPREPLY[r]}" ]]; then
+ unset 'COMPREPLY[r]'; break
+ fi
+ done
+ done
+}
+
+_archco_pkg() {
+ _devtools_compgen "$(
+ command pacman "-$1"
+ )"
+}
+
+_archco() {
+ local cur prev
+ COMPREPLY=()
+ cur=$(_get_cword)
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ _archco_pkg Slq
+ true
+} &&
+complete -F _archco archco communityco
+
+_makechrootpkg() {
+ local cur
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '-I -c -h -l -r -u' -- "$cur" ) )
+ ;;
+ *)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ true
+} &&
+complete -F _makechrootpkg makechrootpkg
+
+_mkarchroot() {
+ local cur
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '-C -M -c -h' -- "$cur" ) )
+ ;;
+ *)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ true
+} &&
+complete -F _mkarchroot mkarchroot
+
+_arch-nspawn() {
+ local cur
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '-C -M -c -h' -- "$cur" ) )
+ ;;
+ *)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ true
+} &&
+complete -F _arch-nspawn arch-nspawn
+# ex:et ts=2 sw=2 ft=sh
diff --git a/contrib/completion/zsh/_devtools.in b/contrib/completion/zsh/_devtools.in
new file mode 100644
index 0000000..eee9776
--- /dev/null
+++ b/contrib/completion/zsh/_devtools.in
@@ -0,0 +1,129 @@
+#compdef archbuild archco arch-nspawn archrelease commitpkg diffpkg 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-x86_64-build=archbuild testing-x86_64-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild multilib-staging-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco checkpkg sogrep offload-build makerepropkg
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+m4_include(lib/valid-tags.sh)
+m4_include(lib/valid-repos.sh)
+
+_binary_arch=${_arch[*]:0:-1}
+
+_archbuild_args=(
+ '-c[Recreate the chroot before building]'
+ '-r[Create chroots in this directory]:base_dir:_files -/'
+ '-h[Display usage]'
+ '--[Introduce makechrootpkg options]:*::makechrootpkg options:= _dispatch makechrootpkg makechrootpkg'
+)
+
+_archco_args=(
+ '*:packages:_devtools_completions_all_packages'
+)
+
+_arch_nspawn_args=(
+ '-C[Location of a pacman config file]:pacman_config:_files -g "*.conf(.)"'
+ '-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"'
+ '-c[Set pacman cache]:pacman_cache:_files -/'
+ '-f[Copy file from the host to the chroot]:copy_file:_files'
+ '-s[Do not run setarch]'
+ '-h[Display usage]'
+ '1:chroot_dir:_files -/'
+)
+
+_archrelease_args=(
+ '-f[Force release without checks]'
+ "*:arch:($_tags[*])"
+)
+
+_commitpkg_args=(
+ '-f[Force release without checks]'
+ '-s[Target repo server]'
+ '-l[Set bandwidth limit]:limit'
+ "-a[Release to a specific architecture only]:arch:($_arch[*])"
+ '1:commit_msg'
+)
+
+_diffpkg_args=(
+ '(-l --list)'{-l,--list}'[Tar content list diff mode]'
+ '(-d --diffoscope)'{-d,--diffoscope}'[Diffoscope diff mode]'
+ '(-p --pkginfo)'{-p,--pkginfo}'[.PKGINFO diff mode]'
+ '(-b --buildinfo)'{-b,--buildinfo}'[.BUILDINFO diff mode]'
+ '(-m --makepkg-config)'{-m,--makepkg-config}'[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"'
+ '(-v --verbose)'{-v,--verbose}'[Provide more detailed/unfiltered output]'
+ '(-h --help)'{-h,--help}'[Display usage]'
+ '*:packages:_devtools_completions_all_packages'
+)
+
+_finddeps_args=(
+ '1:packages:_devtools_completions_all_packages'
+)
+
+_makechrootpkg_args=(
+ '-h[Display usage]'
+ '-c[Clean the chroot before building]'
+ '-d[Bind directory into build chroot as read-write]:bind_dir_rw:_files -/'
+ '-D[Bind directory into build chroot as read-only]:bind_dir_ro:_files -/'
+ '-u[Update the working copy of the chroot before building]'
+ '-r[The chroot dir to use]:chroot_dir:_files -/'
+ '-I[Install a package into the working copy]:target:_files -g "*.pkg.tar.*(.)"'
+ '-l[The directory to use as the working copy]:copy_dir:_files -/'
+ '-n[Run namcap on the package]'
+ '-T[Build in a temporary directory]'
+ '-U[Run makepkg as a specified user]:makepkg_user'
+)
+
+_mkarchroot_args=(
+ '-U[Install a package into the working copy]:target:_files -g "*.pkg.tar.*(.)"'
+ '-C[Location of a pacman config file]:pacman_config:_files -g "*.conf(.)"'
+ '-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"'
+ '-c[Set pacman cache]:pacman_cache:_files -/'
+ '-h[Display usage]'
+ '1:working_dir:_files -/'
+ '*:packages:_devtools_completions_all_packages'
+)
+
+_rebuildpkgs_args=(
+ '1:chroot_dir:_files -/'
+ '*:packages:_devtools_completions_all_packages'
+)
+
+_checkpkg_args=(
+ '(-r --rmdir)'{-r,--rmdir}'[Remove the temporary directory]'
+ '(-w --warn)'{-w,--warn}'[Print a warning in case of differences]'
+ '(-M --makepkg-config)'{-M,--makepkg-config}'[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"'
+ '(-h --help)'{-h,--help}'[Display usage]'
+)
+
+_sogrep_args=(
+ '(-v --verbose)'{-v,--verbose}'[Show matched links in addition to pkgname]'
+ '(-r --refresh)'{-r,--refresh}'[Refresh the links databases]'
+ '(-h --help)'{-h,--help}'[Display usage]'
+ '1:repo:(all $_repos[*])'
+ '2:libname'
+)
+
+_offload_build_args=(
+ '(-r --repo)'{-r,--repo}'[Build against a specific repository]:repo:($_build_repos[*])'
+ '(-a --arch)'{-a,--arch}'[Build against a specific architecture]:arch:(${_binary_arch[*]})'
+ '(-s --server)'{-s,--server}'[Offload to a specific Build server]:server:'
+ '(-h --help)'{-h,--help}'[Display usage]'
+)
+
+_makerepropkg_args=(
+ '-d[Run diffoscope if the package is unreproducible]'
+ '-c[Set pacman cache]:pacman_cache:_files -/'
+ '-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"'
+ '-h[Display usage]'
+ '*:working_dir:_files -g "*.pkg.tar.*(.)"'
+)
+
+_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