feat: Detect architecture in ISO (#101)
This commit is contained in:
parent
d715d79a7d
commit
9b780e5552
2 changed files with 54 additions and 15 deletions
|
|
@ -6,9 +6,9 @@ set -Eeuo pipefail
|
||||||
: "${REMOVE:=""}"
|
: "${REMOVE:=""}"
|
||||||
: "${VERSION:=""}"
|
: "${VERSION:=""}"
|
||||||
: "${DETECTED:=""}"
|
: "${DETECTED:=""}"
|
||||||
: "${PLATFORM:="ARM64"}"
|
|
||||||
|
|
||||||
MIRRORS=2
|
MIRRORS=2
|
||||||
|
PLATFORM="ARM64"
|
||||||
|
|
||||||
parseVersion() {
|
parseVersion() {
|
||||||
|
|
||||||
|
|
@ -62,10 +62,7 @@ printEdition() {
|
||||||
[[ "$result" == "x" ]] && echo "$desc" && return 0
|
[[ "$result" == "x" ]] && echo "$desc" && return 0
|
||||||
|
|
||||||
case "${id,,}" in
|
case "${id,,}" in
|
||||||
"win10"* )
|
"win10"* | "win11"* )
|
||||||
edition="Pro"
|
|
||||||
;;
|
|
||||||
"win11"* )
|
|
||||||
edition="Pro"
|
edition="Pro"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
@ -81,13 +78,26 @@ fromFile() {
|
||||||
local id=""
|
local id=""
|
||||||
local desc="$1"
|
local desc="$1"
|
||||||
local file="${1,,}"
|
local file="${1,,}"
|
||||||
|
local arch="${PLATFORM,,}"
|
||||||
|
|
||||||
|
case "${file/ /_}" in
|
||||||
|
*"_x64_"* | *"_x64."*)
|
||||||
|
arch="x64"
|
||||||
|
;;
|
||||||
|
*"_x86_"* | *"_x86."*)
|
||||||
|
arch="x86"
|
||||||
|
;;
|
||||||
|
*"_arm64_"* | *"_arm64."*)
|
||||||
|
arch="arm64"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
case "${file/ /_}" in
|
case "${file/ /_}" in
|
||||||
"win10"*| "win_10"* | *"windows10"* | *"windows_10"* )
|
"win10"*| "win_10"* | *"windows10"* | *"windows_10"* )
|
||||||
id="win10${PLATFORM,,}"
|
id="win10${arch}"
|
||||||
;;
|
;;
|
||||||
"win11"* | "win_11"* | *"windows11"* | *"windows_11"* )
|
"win11"* | "win_11"* | *"windows11"* | *"windows_11"* )
|
||||||
id="win11${PLATFORM,,}"
|
id="win11${arch}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
@ -103,10 +113,11 @@ fromName() {
|
||||||
|
|
||||||
local id=""
|
local id=""
|
||||||
local name="$1"
|
local name="$1"
|
||||||
|
local arch="$2"
|
||||||
|
|
||||||
case "${name,,}" in
|
case "${name,,}" in
|
||||||
*"windows 10"* ) id="win10${PLATFORM,,}" ;;
|
*"windows 10"* ) id="win10${arch}" ;;
|
||||||
*"windows 11"* ) id="win11${PLATFORM,,}" ;;
|
*"windows 11"* ) id="win11${arch}" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "$id"
|
echo "$id"
|
||||||
|
|
@ -117,8 +128,9 @@ getVersion() {
|
||||||
|
|
||||||
local id
|
local id
|
||||||
local name="$1"
|
local name="$1"
|
||||||
|
local arch="$2"
|
||||||
|
|
||||||
id=$(fromName "$name")
|
id=$(fromName "$arch")
|
||||||
|
|
||||||
echo "$id"
|
echo "$id"
|
||||||
return 0
|
return 0
|
||||||
|
|
|
||||||
|
|
@ -589,13 +589,14 @@ selectVersion() {
|
||||||
|
|
||||||
local tag="$1"
|
local tag="$1"
|
||||||
local xml="$2"
|
local xml="$2"
|
||||||
|
local platform="$3"
|
||||||
local id find name prefer
|
local id find name prefer
|
||||||
|
|
||||||
name=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml")
|
name=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml")
|
||||||
[[ "$name" == *"Operating System"* ]] && name=""
|
[[ "$name" == *"Operating System"* ]] && name=""
|
||||||
[ -z "$name" ] && return 0
|
[ -z "$name" ] && return 0
|
||||||
|
|
||||||
id=$(fromName "$name")
|
id=$(fromName "$name" "$platform")
|
||||||
[ -z "$id" ] && warn "Unknown ${tag,,}: '$name'" && return 0
|
[ -z "$id" ] && warn "Unknown ${tag,,}: '$name'" && return 0
|
||||||
|
|
||||||
prefer="$id-enterprise"
|
prefer="$id-enterprise"
|
||||||
|
|
@ -616,7 +617,7 @@ selectVersion() {
|
||||||
echo "$prefer" && return 0
|
echo "$prefer" && return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
prefer=$(getVersion "$name")
|
prefer=$(getVersion "$name" "$platform")
|
||||||
|
|
||||||
echo "$prefer"
|
echo "$prefer"
|
||||||
return 0
|
return 0
|
||||||
|
|
@ -626,14 +627,40 @@ detectVersion() {
|
||||||
|
|
||||||
local xml="$1"
|
local xml="$1"
|
||||||
local id=""
|
local id=""
|
||||||
|
local arch=""
|
||||||
|
local tag="ARCH"
|
||||||
|
local platform="x64"
|
||||||
|
|
||||||
id=$(selectVersion "DISPLAYNAME" "$xml")
|
arch=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml")
|
||||||
|
|
||||||
|
case "${arch,,}" in
|
||||||
|
"0" )
|
||||||
|
platform="x86"
|
||||||
|
if [[ "${PLATFORM,,}" != "x64" ]]; then
|
||||||
|
error "You cannot boot $platform images on a $PLATFORM cpu!" && exit 67
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"9" )
|
||||||
|
platform="x64"
|
||||||
|
if [[ "${PLATFORM,,}" != "x64" ]]; then
|
||||||
|
error "You cannot boot $platform images on a $PLATFORM cpu!" && exit 67
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"12" )
|
||||||
|
platform="arm64"
|
||||||
|
if [[ "${PLATFORM,,}" != "arm64" ]]; then
|
||||||
|
error "You cannot boot ${platform^^} images on a $PLATFORM cpu!" && exit 67
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
id=$(selectVersion "DISPLAYNAME" "$xml" "$platform")
|
||||||
[ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
|
[ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
|
||||||
|
|
||||||
id=$(selectVersion "PRODUCTNAME" "$xml")
|
id=$(selectVersion "PRODUCTNAME" "$xml" "$platform")
|
||||||
[ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
|
[ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
|
||||||
|
|
||||||
id=$(selectVersion "NAME" "$xml")
|
id=$(selectVersion "NAME" "$xml" "$platform")
|
||||||
[ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
|
[ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue