[arch-projects] [devtools] [PATCH v5 2/2] archrelease: Validate tags before releasing
Pierre Schmitz
pierre at archlinux.de
Wed Feb 8 06:56:09 EST 2012
Am 08.02.2012 12:48, schrieb Lukas Fleischer:
> 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 at cryptocrack.de>
> ---
> archrelease.in | 25 ++++++++++++++++++++++---
> lib/valid-tags.sh | 20 ++++++++++++++++++++
> zsh_completion.in | 17 -----------------
> 3 files changed, 42 insertions(+), 20 deletions(-)
> create mode 100644 lib/valid-tags.sh
>
> diff --git a/archrelease.in b/archrelease.in
> index 40b6c09..5bc2c90 100644
> --- a/archrelease.in
> +++ b/archrelease.in
> @@ -1,13 +1,32 @@
> #!/bin/bash
>
> m4_include(lib/common.sh)
> +m4_include(lib/valid-tags.sh)
>
> -if [[ -z $1 ]]; then
> - echo 'Usage: archrelease <repo>...'
> +# parse command line options
> +FORCE=
> +while getopts ':f' flag; do
> + case $flag in
> + f) FORCE=1 ;;
> + :) die "Option requires an argument -- '$OPTARG'" ;;
> + \?) die "Invalid option -- '$OPTARG'" ;;
> + esac
> +done
> +shift $(( OPTIND - 1 ))
> +
> +if ! (( $# )); then
> + echo 'Usage: archrelease [-f] <repo>...'
> exit 1
> fi
>
> -# TODO: validate repo is really repo-arch
> +# validate repo is really repo-arch
> +if [[ -z $FORCE ]]; then
> + for tag in "$@"; do
> + if ! in_array "$tag" "${_tags[@]}"; then
> + die 'archrelease: Invalid tag: "'$tag'" (use -f to force release)'
> + fi
> + done
> +fi
>
> if [[ ! -f PKGBUILD ]]; then
> die 'archrelease: PKGBUILD not found'
> diff --git a/lib/valid-tags.sh b/lib/valid-tags.sh
> new file mode 100644
> index 0000000..36918fe
> --- /dev/null
> +++ b/lib/valid-tags.sh
> @@ -0,0 +1,20 @@
> +_arch=(
> + i686
> + x86_64
> + any
> +)
> +
> +_tags=(
> + core-i686 core-x86_64 core-any
> + extra-i686 extra-x86_64 extra-any
> + multilib-x86_64
> + staging-i686 staging-x86_64 staging-any
> + testing-i686 testing-x86_64 testing-any
> + multilib-testing-x86_64
> + multilib-staging-x86_64
> + 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
> + kde-unstable-i686 kde-unstable-x86_64 kde-unstable-any
> + gnome-unstable-i686 gnome-unstable-x86_64 gnome-unstable-any
> +)
> diff --git a/zsh_completion.in b/zsh_completion.in
> index 03c2d9a..3b61a2e 100644
> --- a/zsh_completion.in
> +++ b/zsh_completion.in
> @@ -1,22 +1,5 @@
> #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
>
> -_arch=(i686 x86_64 any)
> -
> -_tags=(
> - core-i686 core-x86_64 core-any
> - extra-i686 extra-x86_64 extra-any
> - multilib-x86_64
> - staging-i686 staging-x86_64 staging-any
> - testing-i686 testing-x86_64 testing-any
> - multilib-testing-x86_64
> - multilib-staging-x86_64
> - 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
> - kde-unstable-i686 kde-unstable-x86_64 kde-unstable-any
> - gnome-unstable-i686 gnome-unstable-x86_64 gnome-unstable-any
> -)
> -
> _archbuild_args=(
> '-c[Recreate the chroot before building]'
> '-r[Create chroots in this directory]:base_dir:_files -/'
You forgot to add "m4_include(lib/valid-tags.sh)" here.
--
Pierre Schmitz, http://pierre-schmitz.com
More information about the arch-projects
mailing list