diff options
author | merakor <cem@ckyln.com> | 2021-07-24 20:37:51 +0000 |
---|---|---|
committer | merakor <cem@ckyln.com> | 2021-07-24 20:37:51 +0000 |
commit | 3cf4cf4b1649e5b561b392930a9277cbd36c5566 (patch) | |
tree | 77f0c456ef46003796a0eea70d0cc75a8b6e1a1b | |
parent | fb6a0c90c066e5ed91c607e125b3806a2fd462a5 (diff) | |
download | cpt-3cf4cf4b1649e5b561b392930a9277cbd36c5566.tar.gz |
pkg_download: new function for using alternative downloaders
FossilOrigin-Name: a64a103f527bb5cd45b1e63cf1f8488a220222044c6f0c012f6947ae4abe3e40
-rw-r--r-- | src/cpt-lib.in | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/cpt-lib.in b/src/cpt-lib.in index 306c5bd..504829d 100644 --- a/src/cpt-lib.in +++ b/src/cpt-lib.in @@ -419,6 +419,21 @@ regesc() { sed 's|\\|\\\\|g;s|\[|\\[|g;s|\$|\\$|g;s|\.|\\.|g;s|\*|\\*|g;s|\^|\\^|g' } +pkg_download() { + # $1: URL + # $2: Output (Optional) + set -- "$1" "${2:-${1##*/}}" + case ${dl_prog##*/} in + aria2c|axel) set -- -o "$2" "$1" ;; + curl) set -- -fLo "$2" "$1" ;; + wget|wget2) set -- -O "$2" "$1" ;; + esac + + "$dl_prog" "$@" || { + rm -f "$2" + return 1 + } +} prompt() { # If a CPT_NOPROMPT variable is set, continue. @@ -688,10 +703,8 @@ pkg_sources() { # interrupt, we handle this ourselves. trap_set handle-int - curl "$src" -fLo "${src##*/}" || { - rm -f "${src##*/}" - die "$1" "Failed to download $src" - } + # Download the source + pkg_download "$src" || die "$1" "Failed to download $src" # Restore original trap value. trap_set cleanup @@ -2117,6 +2130,13 @@ create_cache() { command -v llvm-readelf || command -v eu-readelf)"} || elf_prog=ldd + dl_prog=${CPT_DOWNLOADER:="$( + command -v curl || + command -v wget || + command -v wget2 || + command -v axel || + command -v aria2c)"} || dl_prog=curl + # Make note of the user's current ID to do root checks later on. # This is used enough to warrant a place here. uid=$(id -u) |