[pacman-dev] [PATCH 3/6] repo-add: unify checking gpg keys

Allan McRae allan at archlinux.org
Fri Jan 23 07:36:21 UTC 2015


Move the PGP key checking into the check_gpg function.  This also results in
error messages being in colour.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/repo-add.sh.in | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index db39710..183fa41 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -34,6 +34,7 @@ ONLYADDNEW=0
 RMEXISTING=0
 WITHFILES=0
 SIGN=0
+KEY=0
 VERIFY=0
 REPO_DB_FILE=
 LOCKFILE=
@@ -198,6 +199,17 @@ check_gpg() {
 		error "$(gettext "Cannot find the gpg binary! Is GnuPG installed?")"
 		exit 1 # $E_MISSING_PROGRAM
 	fi
+
+	if (( ! VERIFY )); then
+		if ! gpg --list-key ${GPGKEY} &>/dev/null; then
+			if [[ ! -z $GPGKEY ]]; then
+				error "$(gettext "The key ${GPGKEY} does not exist in your keyring.")"
+			elif (( ! KEY )); then
+				error "$(gettext "There is no key in your keyring.")"
+			fi
+			exit 1
+		fi
+	fi
 }
 
 # sign the package database once repackaged
@@ -630,28 +642,14 @@ while (( $# )); do
 		-f|--files) WITHFILES=1;;
 		--nocolor) USE_COLOR='n';;
 		-s|--sign)
-			check_gpg
 			SIGN=1
-			if ! gpg --list-key ${GPGKEY} &>/dev/null; then
-				if [[ ! -z $GPGKEY ]]; then
-					error "$(gettext "The key ${GPGKEY} does not exist in your keyring.")"
-				else
-					error "$(gettext "There is no key in your keyring.")"
-				fi
-				exit 1
-			fi
 			;;
 		-k|--key)
-			check_gpg
+			KEY=1
 			shift
 			GPGKEY=$1
-			if ! gpg --list-key ${GPGKEY} &>/dev/null; then
-				error "$(gettext "The key ${GPGKEY} does not exist in your keyring.")"
-				exit 1
-			fi
 			;;
 		-v|--verify)
-			check_gpg
 			VERIFY=1
 			;;
 		*)
@@ -678,6 +676,10 @@ fi
 verify_repo_extension "$REPO_DB_FILE" >/dev/null
 check_repo_db
 
+if (( SIGN || KEY || VERIFY )); then
+	check_gpg
+fi
+
 for arg in "${args[@]:1}"; do
 	case $cmd in
 		repo-add) add "$arg" ;;
-- 
2.2.2


More information about the pacman-dev mailing list