62 lines
1.8 KiB
Bash
Executable File
62 lines
1.8 KiB
Bash
Executable File
if [ "$#" -lt 3 -o "$#" -gt 3 ]; then
|
|
echo "Usage: $0 URL DESTINATION SHA256SUM"
|
|
exit 1
|
|
fi
|
|
|
|
source scripts/lib.sh
|
|
|
|
URL="$1"
|
|
DESTINATION="$2"
|
|
SHA256SUM="$3"
|
|
|
|
if command -v wget >/dev/null 2>&1; then
|
|
USE_WGET=yes
|
|
else
|
|
if command -v curl >/dev/null 2>&1; then
|
|
USE_WGET=no
|
|
else
|
|
echo "Found neither wget nor curl. Aborting."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d .download_cache ]; then
|
|
echo "Cache directory missing."
|
|
create_directory .download_cache
|
|
fi
|
|
|
|
#TODO: keep track of which cached file is downloaded to which destination
|
|
#TODO: when downloading a file with a new hash to the same destination, mark the old one as no longer in use
|
|
#TODO: if there is an even older one for the same download path, delete it
|
|
#TODO: remove cache maintenance from clean_dependencies
|
|
|
|
if [ -f ".download_cache/$SHA256SUM" ]; then
|
|
if check_sha256 ".download_cache/$SHA256SUM" "$SHA256SUM"; then
|
|
echo "Using locally cached file for $DESTINATION"
|
|
cp ".download_cache/$SHA256SUM" "$DESTINATION"
|
|
exit 0
|
|
else
|
|
echo "Locally cached file for $DESTINATION is corrupted."
|
|
rm ".download_cache/$SHA256SUM"
|
|
$0 "$URL" "$DESTINATION" "$SHA256SUM"
|
|
exit $?
|
|
fi
|
|
else
|
|
echo -n "Downloading $URL to $DESTINATION... "
|
|
if [ $USE_WGET = yes ]; then
|
|
wget -O ".download_cache/$SHA256SUM" "$URL" >/dev/null 2>&1
|
|
else
|
|
curl -L "$URL" --output ".download_cache/$SHA256SUM" >/dev/null 2>&1
|
|
fi
|
|
if check_sha256 ".download_cache/$SHA256SUM" "$SHA256SUM"; then
|
|
cp ".download_cache/$SHA256SUM" "$DESTINATION"
|
|
echo "done."
|
|
exit 0
|
|
else
|
|
echo "error."
|
|
echo "Checksum verification failed. Your download is either corrupted or the file has been altered. Removing file."
|
|
rm ".download_cache/$SHA256SUM"
|
|
exit 1
|
|
fi
|
|
fi
|