[pacman-dev] [PATCH 4/6] repo-add: check for gpg early

Allan McRae allan at archlinux.org
Sun Apr 24 07:26:24 EDT 2011


Check for the presence of gpg as soon as we know we need it.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/repo-add.sh.in |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index fade1e6..94f4e15 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -195,16 +195,19 @@ db_remove_delta()
 	return 1
 } # end db_remove_delta
 
+check_gpg() {
+	if ! type -p gpg >/dev/null; then
+		error "$(gettext "Cannot find the gpg binary! Is gnupg installed?")"
+		exit 1 # $E_MISSING_PROGRAM
+	fi
+}
+
 # sign the package database once repackaged
 create_signature() {
 	(( ! SIGN )) && return
 	local dbfile="$1"
 	local ret=0
 	msg "$(gettext "Signing database...")"
-	if ! type -p gpg; then
-		error "$(gettext "Cannot find the gpg binary! Is gnupg installed?")"
-		exit 1 # $E_MISSING_PROGRAM
-	fi
 
 	local SIGNWITHKEY=""
 	if [[ -n $GPGKEY ]]; then
@@ -225,10 +228,7 @@ verify_signature() {
 	local dbfile="$1"
 	local ret=0
 	msg "$(gettext "Verifying database signature...")"
-	if ! type -p gpg; then
-		error "$(gettext "Cannot find the gpg binary! Is gnupg installed?")"
-		exit 1 # $E_MISSING_PROGRAM
-	fi
+
 	if [[ ! -f $dbfile.sig ]]; then
 		warning "$(gettext "No existing signature found, skipping verification.")"
 		return
@@ -555,6 +555,7 @@ while [[ $# > 0 ]]; do
 		-d|--delta) DELTA=1;;
 		-f|--files) WITHFILES=1;;
 		-s|--sign)
+			check_gpg
 			SIGN=1
 			if ! gpg --list-key ${GPGKEY} &>/dev/null; then
 				if [[ ! -z $GPGKEY ]]; then
@@ -566,6 +567,7 @@ while [[ $# > 0 ]]; do
 			fi
 			;;
 		-k|--key)
+			check_gpg
 			shift
 			GPGKEY="$1"
 			if ! gpg --list-key ${GPGKEY} &>/dev/null; then
@@ -573,7 +575,10 @@ while [[ $# > 0 ]]; do
 				exit 1
 			fi
 			;;
-		-v|--verify) VERIFY=1;;
+		-v|--verify)
+			check_gpg
+			VERIFY=1
+			;;
 		*)
 			if [[ -z $REPO_DB_FILE ]]; then
 				REPO_DB_FILE="$1"
-- 
1.7.4.4



More information about the pacman-dev mailing list