[pacman-dev] [PATCH 1/3] libmakepkg: optimize get_protocol to always return proto, not proto+uri

Eli Schwartz eschwartz at archlinux.org
Tue May 29 04:30:54 UTC 2018


e.g. git+https:// is commonly used for git repositories cloned over
HTTPS, but we assume a proto with a plus in it is actually a protocol
followed by some URI handler. So we might as well simplify the return
value and not have to always add glob matching everywhere when checking
the proto in use.

This is required in order to use the proto directly in function calls,
which will be used in a followup patch.

Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
---
 .../libmakepkg/integrity/generate_checksum.sh.in |  2 +-
 .../libmakepkg/integrity/verify_signature.sh.in  |  4 ++--
 scripts/libmakepkg/source.sh.in                  | 16 ++++++++--------
 scripts/libmakepkg/util/source.sh.in             | 14 ++++++++------
 4 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/scripts/libmakepkg/integrity/generate_checksum.sh.in b/scripts/libmakepkg/integrity/generate_checksum.sh.in
index eb9b74fc..b8b078ec 100644
--- a/scripts/libmakepkg/integrity/generate_checksum.sh.in
+++ b/scripts/libmakepkg/integrity/generate_checksum.sh.in
@@ -52,7 +52,7 @@ generate_one_checksum() {
 		proto="$(get_protocol "$netfile")"
 
 		case $proto in
-			bzr*|git*|hg*|svn*)
+			bzr|git|hg|svn)
 				sum="SKIP"
 				;;
 			*)
diff --git a/scripts/libmakepkg/integrity/verify_signature.sh.in b/scripts/libmakepkg/integrity/verify_signature.sh.in
index ea877822..38f8afa1 100644
--- a/scripts/libmakepkg/integrity/verify_signature.sh.in
+++ b/scripts/libmakepkg/integrity/verify_signature.sh.in
@@ -49,7 +49,7 @@ check_pgpsigs() {
 	for netfile in "${all_sources[@]}"; do
 		proto="$(get_protocol "$netfile")"
 
-		if [[ $proto = git* ]]; then
+		if [[ $proto = git ]]; then
 			verify_git_signature "$netfile" "$statusfile" || continue
 		else
 			verify_file_signature "$netfile" "$statusfile" || continue
@@ -263,7 +263,7 @@ source_has_signatures() {
 		proto="$(get_protocol "$netfile")"
 		query=$(get_uri_query "$netfile")
 
-		if [[ ${netfile%%::*} = *.@(sig?(n)|asc) || ( $proto = git* && $query = signed ) ]]; then
+		if [[ ${netfile%%::*} = *.@(sig?(n)|asc) || ( $proto = git && $query = signed ) ]]; then
 			return 0
 		fi
 	done
diff --git a/scripts/libmakepkg/source.sh.in b/scripts/libmakepkg/source.sh.in
index 5d7df732..198efd5e 100644
--- a/scripts/libmakepkg/source.sh.in
+++ b/scripts/libmakepkg/source.sh.in
@@ -63,16 +63,16 @@ download_sources() {
 			local)
 				download_local "$netfile"
 				;;
-			bzr*)
+			bzr)
 				(( get_vcs )) && download_bzr "$netfile"
 				;;
-			git*)
+			git)
 				(( get_vcs )) && download_git "$netfile"
 				;;
-			hg*)
+			hg)
 				(( get_vcs )) && download_hg "$netfile"
 				;;
-			svn*)
+			svn)
 				(( get_vcs )) && download_svn "$netfile"
 				;;
 			*)
@@ -93,16 +93,16 @@ extract_sources() {
 		local file=$(get_filename "$netfile")
 		local proto=$(get_protocol "$netfile")
 		case "$proto" in
-			bzr*)
+			bzr)
 				extract_bzr "$netfile"
 				;;
-			git*)
+			git)
 				extract_git "$netfile"
 				;;
-			hg*)
+			hg)
 				extract_hg "$netfile"
 				;;
-			svn*)
+			svn)
 				extract_svn "$netfile"
 				;;
 			*)
diff --git a/scripts/libmakepkg/util/source.sh.in b/scripts/libmakepkg/util/source.sh.in
index 17e44664..faa7061b 100644
--- a/scripts/libmakepkg/util/source.sh.in
+++ b/scripts/libmakepkg/util/source.sh.in
@@ -41,10 +41,12 @@ get_protocol() {
 	if [[ $1 = *://* ]]; then
 		# strip leading filename
 		local proto="${1#*::}"
-		printf "%s\n" "${proto%%://*}"
+		proto="${proto%%://*}"
+		# strip proto+uri://
+		printf "%s\n" "${proto%%+*}"
 	elif [[ $1 = *lp:* ]]; then
 		local proto="${1#*::}"
-		printf "%s\n" "${proto%%lp:*}"
+		printf "%s\n" "${proto%%+lp:*}"
 	else
 		printf "%s\n" local
 	fi
@@ -63,15 +65,15 @@ get_filename() {
 	local proto=$(get_protocol "$netfile")
 
 	case $proto in
-		bzr*|git*|hg*|svn*)
+		bzr|git|hg|svn)
 			filename=${netfile%%#*}
 			filename=${filename%%\?*}
 			filename=${filename%/}
 			filename=${filename##*/}
-			if [[ $proto = bzr* ]]; then
+			if [[ $proto = bzr ]]; then
 				filename=${filename#*lp:}
 			fi
-			if [[ $proto = git* ]]; then
+			if [[ $proto = git ]]; then
 				filename=${filename%%.git*}
 			fi
 			;;
@@ -89,7 +91,7 @@ get_filepath() {
 	local proto="$(get_protocol "$1")"
 
 	case $proto in
-		bzr*|git*|hg*|svn*)
+		bzr|git|hg|svn)
 			if [[ -d "$startdir/$file" ]]; then
 				file="$startdir/$file"
 			elif [[ -d "$SRCDEST/$file" ]]; then
-- 
2.17.0


More information about the pacman-dev mailing list