From bb1a89a8372b5b8c5372578b2ffe4b7ff04f0843 Mon Sep 17 00:00:00 2001 From: Levente Polyak Date: Wed, 18 May 2022 02:07:01 +0200 Subject: make: split out completion scripts from root worktree --- contrib/completion/bash/devtools.in | 90 +++++++++++++++++++++++++ contrib/completion/zsh/_devtools.in | 129 ++++++++++++++++++++++++++++++++++++ 2 files changed, 219 insertions(+) create mode 100644 contrib/completion/bash/devtools.in create mode 100644 contrib/completion/zsh/_devtools.in (limited to 'contrib') 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 -- cgit v1.2.3-54-g00ecf