[pacman-dev] [PATCH 2/3] libmakepkg: implement extendable source protocols
Eli Schwartz
eschwartz at archlinux.org
Tue May 29 04:30:55 UTC 2018
Lookup the existence of matching functions for each protocol, and
fallback on the generic file handler. New source protocols can then be
added via thirdparty libmakepkg drop-ins without requiring modifications
to source.sh
Fixes FS#49076
Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
---
scripts/libmakepkg/source.sh.in | 46 +++++++++------------------------
1 file changed, 12 insertions(+), 34 deletions(-)
diff --git a/scripts/libmakepkg/source.sh.in b/scripts/libmakepkg/source.sh.in
index 198efd5e..c07ce76d 100644
--- a/scripts/libmakepkg/source.sh.in
+++ b/scripts/libmakepkg/source.sh.in
@@ -60,25 +60,15 @@ download_sources() {
local proto=$(get_protocol "$netfile")
case "$proto" in
- local)
- download_local "$netfile"
- ;;
- bzr)
- (( get_vcs )) && download_bzr "$netfile"
- ;;
- git)
- (( get_vcs )) && download_git "$netfile"
- ;;
- hg)
- (( get_vcs )) && download_hg "$netfile"
- ;;
- svn)
- (( get_vcs )) && download_svn "$netfile"
- ;;
- *)
- download_file "$netfile"
+ bzr|git|hg|svn)
+ (( get_vcs )) || continue
;;
esac
+ if declare -f download_$proto > /dev/null; then
+ download_$proto "$netfile"
+ else
+ download_file "$netfile"
+ fi
popd &>/dev/null
done
@@ -92,22 +82,10 @@ extract_sources() {
for netfile in "${all_sources[@]}"; do
local file=$(get_filename "$netfile")
local proto=$(get_protocol "$netfile")
- case "$proto" in
- bzr)
- extract_bzr "$netfile"
- ;;
- git)
- extract_git "$netfile"
- ;;
- hg)
- extract_hg "$netfile"
- ;;
- svn)
- extract_svn "$netfile"
- ;;
- *)
- extract_file "$file"
- ;;
- esac
+ if declare -f extract_$proto > /dev/null; then
+ extract_$proto "$netfile"
+ else
+ extract_file "$file"
+ fi
done
}
--
2.17.0
More information about the pacman-dev
mailing list