[pacman-dev] [PATCH 2/3] libmakepkg: implement extendable source protocols
Allan McRae
allan at archlinux.org
Mon Jun 4 06:56:18 UTC 2018
On 29/05/18 14:30, Eli Schwartz wrote:
> 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
> ;;
Should this be moved into the download_$proto functions? I'd guess most
of the dropins would be for other vcs systems, and this is not extendable.
> 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
> }
>
More information about the pacman-dev
mailing list