Commit 9ab0d945 authored by Lukas Fleischer's avatar Lukas Fleischer Committed by Pierre Schmitz
Browse files

archrelease: Validate tags before releasing



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: default avatarLukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: default avatarPierre Schmitz <pierre@archlinux.de>
parent 5e8cb676
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
#!/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'

lib/valid-tags.sh

0 → 100644
+20 −0
Original line number Diff line number Diff line
_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
)
+1 −16
Original line number Diff line number Diff line
#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
)
m4_include(lib/valid-tags.sh)

_archbuild_args=(
	'-c[Recreate the chroot before building]'