mirror of
https://github.com/termux-pacman/termux-packages.git
synced 2026-01-08 03:43:25 +00:00
57 lines
1.5 KiB
Bash
Executable File
57 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
|
|
termux_download() {
|
|
if [ $# != 3 ]; then
|
|
termux_error_exit "termux_download(): Invalid arguments - expected \$URL \$DESTINATION \$CHECKSUM"
|
|
fi
|
|
local URL="$1"
|
|
local DESTINATION="$2"
|
|
local CHECKSUM="$3"
|
|
|
|
if [ -f "$DESTINATION" ] && [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then
|
|
# Keep existing file if checksum matches.
|
|
local EXISTING_CHECKSUM
|
|
EXISTING_CHECKSUM=$(sha256sum "$DESTINATION" | cut -f 1 -d ' ')
|
|
if [ "$EXISTING_CHECKSUM" = "$CHECKSUM" ]; then return; fi
|
|
fi
|
|
|
|
local TMPFILE
|
|
local -a CURL_OPTIONS=(
|
|
--fail
|
|
--retry 20
|
|
--retry-connrefused
|
|
--retry-delay 30
|
|
--location
|
|
)
|
|
TMPFILE=$(mktemp "$TERMUX_PKG_TMPDIR/download.${TERMUX_PKG_NAME-unnamed}.XXXXXXXXX")
|
|
if [ "${TERMUX_QUIET_BUILD-}" = true ]; then
|
|
CURL_OPTIONS+=( --no-progress-meter)
|
|
fi
|
|
|
|
echo "Downloading ${URL}"
|
|
if curl "${CURL_OPTIONS[@]}" --output "$TMPFILE" "$URL"; then
|
|
local ACTUAL_CHECKSUM
|
|
ACTUAL_CHECKSUM=$(sha256sum "$TMPFILE" | cut -f 1 -d ' ')
|
|
if [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then
|
|
if [ "$CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
|
|
>&2 printf "Wrong checksum for %s\nExpected: %s\nActual: %s\n" \
|
|
"$URL" "$CHECKSUM" "$ACTUAL_CHECKSUM"
|
|
return 1
|
|
fi
|
|
elif [ -z "$CHECKSUM" ]; then
|
|
printf "WARNING: No checksum check for %s:\nActual: %s\n" \
|
|
"$URL" "$ACTUAL_CHECKSUM"
|
|
fi
|
|
mv "$TMPFILE" "$DESTINATION"
|
|
return 0
|
|
fi
|
|
|
|
echo "Failed to download $URL" >&2
|
|
return 1
|
|
}
|
|
|
|
# Make script standalone executable as well as sourceable
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
termux_download "$@"
|
|
fi
|