summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-05-28 23:14:03 -0400
committerAllan McRae <allan@archlinux.org>2019-01-22 09:38:21 +1000
commitac0e21a6df65c3770920be39b3fe14d8b49f637b (patch)
tree11ae21146559e9bebe0222b3ea102f58450458d3
parent1b9e358f1d7ff806c62a7170f57342dd0e2338bf (diff)
downloadpacman-ac0e21a6df65c3770920be39b3fe14d8b49f637b.tar.xz
libmakepkg: optimize get_protocol to always return proto, not proto+uri
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: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/libmakepkg/integrity/generate_checksum.sh.in2
-rw-r--r--scripts/libmakepkg/integrity/verify_signature.sh.in4
-rw-r--r--scripts/libmakepkg/source.sh.in16
-rw-r--r--scripts/libmakepkg/util/source.sh.in14
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 8edc48d3..57ef46ff 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 b5f9eee9..9742bdf2 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