Add Windows 10 support to quickget
This commit is contained in:
parent
a4cfed64e1
commit
f908e3be96
126
quickget
126
quickget
@ -9,6 +9,7 @@ function os_support() {
|
||||
ubuntu-kylin \
|
||||
ubuntu-mate \
|
||||
ubuntu-studio \
|
||||
windows \
|
||||
xubuntu
|
||||
}
|
||||
|
||||
@ -25,14 +26,65 @@ function releases_ubuntu() {
|
||||
devel
|
||||
}
|
||||
|
||||
function languages_windows() {
|
||||
echo Arabic \
|
||||
Brazilian Portuguese \
|
||||
Bulgarian \
|
||||
Chinese \(Simplified\) \
|
||||
Chinese \(Traditional\) \
|
||||
Croatian \
|
||||
Czech \
|
||||
Danish \
|
||||
Dutch \
|
||||
English \
|
||||
English International \
|
||||
Estonian \
|
||||
Finnish \
|
||||
French \
|
||||
French Canadian \
|
||||
German \
|
||||
Greek \
|
||||
Hebrew \
|
||||
Hungarian \
|
||||
Italian \
|
||||
Japanese \
|
||||
Korean \
|
||||
Latvian \
|
||||
Lithuanian \
|
||||
Norwegian \
|
||||
Polish \
|
||||
Portuguese \
|
||||
Romanian \
|
||||
Russian \
|
||||
Serbian Latin \
|
||||
Slovak \
|
||||
Slovenian \
|
||||
Spanish \
|
||||
Spanish \(Mexico\) \
|
||||
Swedish \
|
||||
Thai \
|
||||
Turkish \
|
||||
Ukrainian
|
||||
}
|
||||
|
||||
|
||||
function releases_windows() {
|
||||
echo 10
|
||||
}
|
||||
|
||||
function web_get() {
|
||||
local DIR="${2}"
|
||||
local FILE=""
|
||||
local URL="${1}"
|
||||
FILE="${URL##*/}"
|
||||
if [ -n "${3}" ]; then
|
||||
FILE="${3}"
|
||||
else
|
||||
FILE="${URL##*/}"
|
||||
fi
|
||||
|
||||
mkdir -p "${DIR}" 2>/dev/null
|
||||
if ! wget --quiet --continue --show-progress --progress=bar:force:noscroll "${URL}" -O "${DIR}/${FILE}"; then
|
||||
echo "ERROR! Failed to download ${URL}"
|
||||
echo "ERROR! Failed to download ${URL}. Try running 'quickget' again."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
@ -77,15 +129,21 @@ function make_vm_config() {
|
||||
elif [ "${OS}" == "macos" ]; then
|
||||
GUEST="macos"
|
||||
IMAGE_TYPE="img"
|
||||
elif [ "${OS}" == "windows" ]; then
|
||||
GUEST="windows"
|
||||
IMAGE_TYPE="iso"
|
||||
fi
|
||||
|
||||
if [ ! -e "${OS}-${RELEASE}.conf" ]; then
|
||||
echo "Making VM configuration for ${OS}-${RELEASE}..."
|
||||
cat << EOF > "${OS}-${RELEASE}.conf"
|
||||
guest_os="${GUEST}"
|
||||
${IMAGE_TYPE}="${VM_PATH}/${IMAGE_FILE}"
|
||||
disk_img="${VM_PATH}/disk.qcow2"
|
||||
${IMAGE_TYPE}="${VM_PATH}/${IMAGE_FILE}"
|
||||
EOF
|
||||
if [ -n "${2}" ]; then
|
||||
echo "driver_iso=${VM_PATH}/${2}" >> "${OS}-${RELEASE}.conf"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@ -219,6 +277,53 @@ function get_ubuntu() {
|
||||
start_vm_info
|
||||
}
|
||||
|
||||
# Adapted from https://gist.github.com/hongkongkiwi/15a5bf16437315df256c118c163607cb
|
||||
function get_windows() {
|
||||
if [ "${RELEASE}" != "10" ]; then
|
||||
echo "ERROR! Unknown release: ${RELEASE}"
|
||||
releases_windows
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local ARCH="x64"
|
||||
local LANG_CODE="en"
|
||||
local LATEST_WINDOWS_VERSION=""
|
||||
local WINDOWS_NAME=""
|
||||
local VERSION_ID=""
|
||||
local EDITION_ID=""
|
||||
local LANGUAGE_ID=""
|
||||
local FILE_NAME=""
|
||||
local ARCH_ID=""
|
||||
local DOWNLOAD_INFO=""
|
||||
local DOWNLOAD_ID=""
|
||||
local DOWNLOAD_URL=""
|
||||
|
||||
echo "Getting Windows ${RELEASE} URL..."
|
||||
LATEST_WINDOWS_VERSION=$(wget -q -O- "https://tb.rg-adguard.net/php/get_version.php?type_id=1" | jq '.versions | sort_by(-(.version_id | tonumber))[0]')
|
||||
WINDOWS_NAME=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .name)
|
||||
VERSION_ID=$(echo "${LATEST_WINDOWS_VERSION}" | jq -r .version_id)
|
||||
EDITION_ID=$(wget -q -O- "https://tb.rg-adguard.net/php/get_edition.php?version_id=${VERSION_ID}&lang=name_${LANG_CODE}" | jq -r '.editions[] | select(.name_'${LANG_CODE}'=="Windows 10").edition_id')
|
||||
LANGUAGE_ID=$(wget -q -O- "https://tb.rg-adguard.net/php/get_language.php?edition_id=${EDITION_ID}&lang=name_${LANG_CODE}" | jq -r '.languages[] | select(.name_'${LANG_CODE}'=="'"${LANG_NAME}"'").language_id')
|
||||
ARCH_INFO=$(wget -q -O- "https://tb.rg-adguard.net/php/get_arch.php?language_id=${LANGUAGE_ID}")
|
||||
FILE_NAME=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).name')
|
||||
ARCH_ID=$(echo "${ARCH_INFO}" | jq -r '.archs[] | select(.name | contains("'${ARCH}'")).arch_id')
|
||||
DOWNLOAD_INFO=$(wget -q -O- "https://tb.rg-adguard.net/dl.php?fileName=${ARCH_ID}&lang=en")
|
||||
DOWNLOAD_ID=$(echo "${DOWNLOAD_INFO}" | grep -oP '(?<=https:\/\/tb\.rg-adguard\.net/dl\.php\?go=)[0-9a-z]+')
|
||||
DOWNLOAD_URL="https://tb.rg-adguard.net/dl.php?go=${DOWNLOAD_ID}"
|
||||
|
||||
make_vm_dir
|
||||
|
||||
echo "Downloading ${WINDOWS_NAME}..."
|
||||
web_get "${DOWNLOAD_URL}" "${VM_PATH}" "${FILE_NAME}"
|
||||
|
||||
echo "Downloading virtio-win.iso..."
|
||||
web_get "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso" "${VM_PATH}"
|
||||
|
||||
make_vm_config "${FILE_NAME}" "virtio-win.iso"
|
||||
|
||||
start_vm_info
|
||||
}
|
||||
|
||||
if [ -n "${1}" ]; then
|
||||
OS="${1,,}"
|
||||
else
|
||||
@ -235,6 +340,8 @@ else
|
||||
releases_macos
|
||||
elif [[ "${OS}" == *"ubuntu"* ]]; then
|
||||
releases_ubuntu
|
||||
elif [ "${OS}" == "windows" ]]; then
|
||||
releases_windows
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
@ -245,6 +352,19 @@ if [ "${OS}" == "macos" ]; then
|
||||
get_macos
|
||||
elif [[ "${OS}" == *"ubuntu"* ]]; then
|
||||
get_ubuntu
|
||||
elif [ "${OS}" == "windows" ]; then
|
||||
if [ -n "${3}" ]; then
|
||||
LANG_NAME="${3}"
|
||||
LANG_NAMES=$(languages_windows)
|
||||
if [[ "${LANG_NAMES}" != *"${LANG_NAME}"* ]]; then
|
||||
echo "ERROR! ${LANG_NAME} is not a supported language:"
|
||||
languages_windows
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
LANG_NAME="English International"
|
||||
fi
|
||||
get_windows "${LANG_NAME}"
|
||||
else
|
||||
echo "ERROR! You must specify an OS:"
|
||||
os_support
|
||||
|
Loading…
Reference in New Issue
Block a user