diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2018-05-29 05:14:03 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2019-01-22 00:38:21 +0100 |
commit | ac0e21a6df65c3770920be39b3fe14d8b49f637b (patch) | |
tree | 11ae21146559e9bebe0222b3ea102f58450458d3 /scripts/libmakepkg/util | |
parent | 1b9e358f1d7ff806c62a7170f57342dd0e2338bf (diff) | |
download | pacman-ac0e21a6df65c3770920be39b3fe14d8b49f637b.tar.gz pacman-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>
Diffstat (limited to 'scripts/libmakepkg/util')
-rw-r--r-- | scripts/libmakepkg/util/source.sh.in | 14 |
1 files changed, 8 insertions, 6 deletions
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 |