From 56e5567b577bb777cacd08fd887949d83753fe39 Mon Sep 17 00:00:00 2001 From: z4yx Date: Mon, 16 Mar 2020 15:14:56 +0800 Subject: [PATCH] sync the latest release of all major versions (tuna/issues#748) --- virtualbox.sh | 89 +++++++++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 39 deletions(-) diff --git a/virtualbox.sh b/virtualbox.sh index 53746ea..4327e6f 100755 --- a/virtualbox.sh +++ b/virtualbox.sh @@ -65,57 +65,68 @@ echo "Debian and ubuntu finished" # === download standalone packages ==== +timeout -s INT 30 wget ${WGET_OPTIONS:-} -q -O "/tmp/index.html" "${BASE_URL}/" timeout -s INT 30 wget ${WGET_OPTIONS:-} -q -O "${BASE_PATH}/LATEST.TXT" "${BASE_URL}/LATEST.TXT" -LATEST_VERSION=`cat "${BASE_PATH}/LATEST.TXT"` -LATEST_PATH="${BASE_PATH}/${LATEST_VERSION}" -mkdir -p ${LATEST_PATH} -timeout -s INT 30 wget ${WGET_OPTIONS:-} -q -O "${LATEST_PATH}/MD5SUMS" "${BASE_URL}/${LATEST_VERSION}/MD5SUMS" -timeout -s INT 30 wget ${WGET_OPTIONS:-} -q -O "${LATEST_PATH}/SHA256SUMS" "${BASE_URL}/${LATEST_VERSION}/SHA256SUMS" +for major in 4 5 6 7 8;do + LATEST_VERSION=$(grep -P -o "\"$major\.[\\d\\.]+/\"" -r /tmp/index.html|tail -n 1) + LATEST_VERSION=${LATEST_VERSION%/\"} + LATEST_VERSION=${LATEST_VERSION#\"} + [[ -z "$LATEST_VERSION" ]] && continue -while read line; do - read -a tokens <<< $line - pkg_checksum=${tokens[0]} - filename=${tokens[1]} - filename=${filename/\*/} + LATEST_PATH="${BASE_PATH}/${LATEST_VERSION}" - dest_filename="${LATEST_PATH}/${filename}" - pkg_url="${BASE_URL}/${LATEST_VERSION}/${filename}" + mkdir -p ${LATEST_PATH} + timeout -s INT 30 wget ${WGET_OPTIONS:-} -q -O "${LATEST_PATH}/MD5SUMS" "${BASE_URL}/${LATEST_VERSION}/MD5SUMS" + timeout -s INT 30 wget ${WGET_OPTIONS:-} -q -O "${LATEST_PATH}/SHA256SUMS" "${BASE_URL}/${LATEST_VERSION}/SHA256SUMS" - declare downloaded=false + while read line; do + read -a tokens <<< $line + pkg_checksum=${tokens[0]} + filename=${tokens[1]} + filename=${filename/\*/} - if [[ -f ${dest_filename} ]]; then - echo "${pkg_checksum} ${dest_filename}" | md5sum -c - && { - downloaded=true - echo "Skipping ${filename}" - } - fi - for retry in `seq ${MAX_RETRY}`; do - rm ${dest_filename} || true - echo "downloading ${pkg_url} to ${dest_filename}" - if [[ -z ${DRY_RUN:-} ]]; then - timeout -s INT "$DOWNLOAD_TIMEOUT" wget ${WGET_OPTIONS:-} -N -c -q -O ${dest_filename} ${pkg_url} && { - # two space for md5sum/sha1sum/sha256sum check format - echo "${pkg_checksum} ${dest_filename}" | md5sum -c - && downloaded=true + dest_filename="${LATEST_PATH}/${filename}" + pkg_url="${BASE_URL}/${LATEST_VERSION}/${filename}" + + declare downloaded=false + + if [[ -f ${dest_filename} ]]; then + echo "${pkg_checksum} ${dest_filename}" | md5sum -c - && { + downloaded=true + echo "Skipping ${filename}" } - else - downloaded=true fi - [[ $downloaded == true ]] && break - done - if [[ $downloaded == false ]];then - echo "failed to download ${pkg_url} to ${dest_filename}" - exit 1 - fi + for retry in `seq ${MAX_RETRY}`; do + [[ $downloaded == true ]] && break + rm ${dest_filename} || true + echo "downloading ${pkg_url} to ${dest_filename}" + if [[ -z ${DRY_RUN:-} ]]; then + timeout -s INT "$DOWNLOAD_TIMEOUT" wget ${WGET_OPTIONS:-} -N -c -q -O ${dest_filename} ${pkg_url} && { + # two space for md5sum/sha1sum/sha256sum check format + echo "${pkg_checksum} ${dest_filename}" | md5sum -c - && downloaded=true + } + else + downloaded=true + fi + done + if [[ $downloaded == false ]];then + echo "failed to download ${pkg_url} to ${dest_filename}" + exit 1 + fi + done < "${LATEST_PATH}/MD5SUMS" + echo "Virtualbox ${LATEST_VERSION} finished" +done + +LATEST_VERSION=`cat "${BASE_PATH}/LATEST.TXT"` +for filename in ${BASE_PATH}/${LATEST_VERSION}/*.*; do case $filename in *Win.exe) - ln -sf ${dest_filename} ${BASE_PATH}/virtualbox-Win-latest.exe + ln -sf "${filename}" "${BASE_PATH}/virtualbox-Win-latest.exe" ;; *OSX.dmg) - ln -sf ${dest_filename} ${BASE_PATH}/virtualbox-osx-latest.dmg + ln -sf "${filename}" "${BASE_PATH}/virtualbox-osx-latest.dmg" ;; esac - -done < "${LATEST_PATH}/MD5SUMS" -echo "Virtualbox ${LATEST_VERSION} finished" +done \ No newline at end of file