mirror of
				https://github.com/oSoWoSo/DistroHopper.git
				synced 2024-08-14 22:46:53 +00:00 
			
		
		
		
	Add Windows 10 support to quickget
This commit is contained in:
		
							parent
							
								
									a4cfed64e1
								
							
						
					
					
						commit
						f908e3be96
					
				
					 1 changed files with 123 additions and 3 deletions
				
			
		
							
								
								
									
										124
									
								
								quickget
									
										
									
									
									
								
							
							
						
						
									
										124
									
								
								quickget
									
										
									
									
									
								
							|  | @ -9,6 +9,7 @@ function os_support() { | ||||||
|     ubuntu-kylin \ |     ubuntu-kylin \ | ||||||
|     ubuntu-mate \ |     ubuntu-mate \ | ||||||
|     ubuntu-studio \ |     ubuntu-studio \ | ||||||
|  |     windows \ | ||||||
|     xubuntu |     xubuntu | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -25,14 +26,65 @@ function releases_ubuntu() { | ||||||
|     devel |     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() { | function web_get() { | ||||||
|     local DIR="${2}" |     local DIR="${2}" | ||||||
|     local FILE="" |     local FILE="" | ||||||
|     local URL="${1}" |     local URL="${1}" | ||||||
|  |     if [ -n "${3}" ]; then | ||||||
|  |         FILE="${3}" | ||||||
|  |     else | ||||||
|         FILE="${URL##*/}" |         FILE="${URL##*/}" | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|     mkdir -p "${DIR}" 2>/dev/null |     mkdir -p "${DIR}" 2>/dev/null | ||||||
|     if ! wget --quiet --continue --show-progress --progress=bar:force:noscroll "${URL}" -O "${DIR}/${FILE}"; then |     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 |         exit 1 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  | @ -77,15 +129,21 @@ function make_vm_config() { | ||||||
|     elif [ "${OS}" == "macos" ]; then |     elif [ "${OS}" == "macos" ]; then | ||||||
|         GUEST="macos" |         GUEST="macos" | ||||||
|         IMAGE_TYPE="img" |         IMAGE_TYPE="img" | ||||||
|  |     elif [ "${OS}" == "windows" ]; then | ||||||
|  |         GUEST="windows" | ||||||
|  |         IMAGE_TYPE="iso" | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     if [ ! -e "${OS}-${RELEASE}.conf" ]; then |     if [ ! -e "${OS}-${RELEASE}.conf" ]; then | ||||||
|         echo "Making VM configuration for ${OS}-${RELEASE}..." |         echo "Making VM configuration for ${OS}-${RELEASE}..." | ||||||
|         cat << EOF > "${OS}-${RELEASE}.conf" |         cat << EOF > "${OS}-${RELEASE}.conf" | ||||||
| guest_os="${GUEST}" | guest_os="${GUEST}" | ||||||
| ${IMAGE_TYPE}="${VM_PATH}/${IMAGE_FILE}" |  | ||||||
| disk_img="${VM_PATH}/disk.qcow2" | disk_img="${VM_PATH}/disk.qcow2" | ||||||
|  | ${IMAGE_TYPE}="${VM_PATH}/${IMAGE_FILE}" | ||||||
| EOF | EOF | ||||||
|  |         if [ -n "${2}" ]; then | ||||||
|  |             echo "driver_iso=${VM_PATH}/${2}" >> "${OS}-${RELEASE}.conf" | ||||||
|  |         fi | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -219,6 +277,53 @@ function get_ubuntu() { | ||||||
|     start_vm_info |     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 | if [ -n "${1}" ]; then | ||||||
|     OS="${1,,}" |     OS="${1,,}" | ||||||
| else | else | ||||||
|  | @ -235,6 +340,8 @@ else | ||||||
|         releases_macos |         releases_macos | ||||||
|     elif [[ "${OS}" == *"ubuntu"* ]]; then |     elif [[ "${OS}" == *"ubuntu"* ]]; then | ||||||
|         releases_ubuntu |         releases_ubuntu | ||||||
|  |     elif [ "${OS}" == "windows" ]]; then | ||||||
|  |         releases_windows | ||||||
|     fi |     fi | ||||||
|     exit 1 |     exit 1 | ||||||
| fi | fi | ||||||
|  | @ -245,6 +352,19 @@ if [ "${OS}" == "macos" ]; then | ||||||
|     get_macos |     get_macos | ||||||
| elif [[ "${OS}" == *"ubuntu"* ]]; then | elif [[ "${OS}" == *"ubuntu"* ]]; then | ||||||
|     get_ubuntu |     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 | else | ||||||
|     echo "ERROR! You must specify an OS:" |     echo "ERROR! You must specify an OS:" | ||||||
|     os_support |     os_support | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue