Compare every single tag with a list of valid tags. This prevents broken releases which occurred whenever someone made a typo on the command line: $ ./archrelease community i686 ==> ERROR: archrelease: Invalid tag: "community" (use -f to force release) Since the list is used in the ZSH completion as well, break it out to a separate file and move it to "lib/". Also, add a command line parameter to allow for releasing to an unknown repository when necessary. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de> Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
70 lines
2.3 KiB
Plaintext
70 lines
2.3 KiB
Plaintext
#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 multilib-staging-build=archbuild kde-unstable-i686-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-i686-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco
|
|
|
|
m4_include(lib/valid-tags.sh)
|
|
|
|
_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_all_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_all_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
|