[PATCH util-modular] release.sh: add --gpgkey option
Emil Velikov
emil.l.velikov at gmail.com
Tue Jul 19 14:27:02 UTC 2016
From: Emil Velikov <emil.velikov at collabora.com>
To allow users with multiple keys to select the appropriate one.
Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
All the "if x$GPGKEY = x" checking looks iffy so any suggestions how to
minimise/remove it are greatly appreciated.
---
release.sh | 43 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 41 insertions(+), 2 deletions(-)
diff --git a/release.sh b/release.sh
index 74a94d4..71ac830 100755
--- a/release.sh
+++ b/release.sh
@@ -68,6 +68,29 @@ check_option_args() {
}
#------------------------------------------------------------------------------
+# Function: check_gpgkey
+#------------------------------------------------------------------------------
+#
+# check if the gpg key provided is known/available
+# arguments:
+# $1 - the gpg key
+# returns:
+# if it returns, everything is good
+# otherwise it exit's
+check_gpgkey() {
+ arg=$1
+
+ $GPG --list-keys "$arg" &>/dev/null
+ if [ $? -ne 0 ]; then
+ echo ""
+ echo "Error: the argument '$arg' is not a known gpg key."
+ echo ""
+ usage
+ exit 1
+ fi
+}
+
+#------------------------------------------------------------------------------
# Function: check_modules_specification
#------------------------------------------------------------------------------
#
@@ -272,7 +295,11 @@ sign_or_fail() {
if [ -n "$1" ]; then
sig=$1.sig
rm -f $sig
- $GPG -b $1 1>&2
+ if [ x"$GPGKEY" = x ]; then
+ $GPG -b $1 1>&2
+ else
+ $GPG -b -u $GPGKEY $1 1>&2
+ fi
if [ $? -ne 0 ]; then
echo "Error: failed to sign $1." >&2
return 1
@@ -469,7 +496,11 @@ process_module() {
else
# Tag the top commit with the tar name
if [ x"$DRY_RUN" = x ]; then
- git tag -s -m $tag_name $tag_name
+ if [ x"$GPGKEY" = x ]; then
+ git tag -s -m $tag_name $tag_name
+ else
+ git tag -u $GPGKEY -s -m $tag_name $tag_name
+ fi
if [ $? -ne 0 ]; then
echo "Error: unable to tag module with \"$tag_name\"."
cd $top_src
@@ -713,6 +744,7 @@ Options:
--dist make 'dist' instead of 'distcheck'; use with caution
--distcheck Default, ignored for compatibility
--dry-run Does everything except tagging and uploading tarballs
+ --gpgkey <key> Specify the key used to sign the git tag/release tarballs
--force Force overwriting an existing release
--help Display this help and exit successfully
--modfile <file> Release the git modules specified in <file>
@@ -779,6 +811,13 @@ do
--force)
FORCE=yes
;;
+ # Allow user specified GPG key
+ --gpgkey)
+ check_option_args $1 $2
+ shift
+ check_gpgkey $1
+ GPGKEY=$1
+ ;;
# Display this help and exit successfully
--help)
usage
--
2.8.2
More information about the xorg-devel
mailing list