Unverified Commit 8bbd87df authored by Kroese's avatar Kroese Committed by GitHub
Browse files

feat: Refactor platform code (#472)

parent fd1fd1c4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -291,6 +291,19 @@ docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_

  Please note that in this mode, the container and Windows will each have their own separate IPs. The container will keep the macvlan IP, and Windows will use the DHCP IP.

* ### How do I add multiple disks?

  To create additional disks, modify your compose file like this:
  
  ```yaml
  environment:
    DISK2_SIZE: "32G"
    DISK3_SIZE: "64G"
  volumes:
    - /home/example:/storage2
    - /mnt/data/example:/storage3
  ```

* ### How do I pass-through a disk?

  It is possible to pass-through disk devices directly by adding them to your compose file in this way:
+8 −8
Original line number Diff line number Diff line
@@ -41,14 +41,14 @@ parseVersion() {
      ;;
    "7" | "7e" | "win7" | "win7e" | "windows7" | "windows 7" )
      VERSION="win7${PLATFORM,,}"
      DETECTED="win7${PLATFORM,,}-enterprise"
      [ -z "$DETECTED" ] && DETECTED="win7${PLATFORM,,}-enterprise"
      ;;
    "7u" | "win7u" | "windows7u" | "windows 7u" )
      VERSION="win7${PLATFORM,,}-ultimate"
      ;;
    "vista" | "winvista" | "windowsvista" | "windows vista" )
      VERSION="winvista${PLATFORM,,}"
      DETECTED="winvista${PLATFORM,,}-enterprise"
      [ -z "$DETECTED" ] && DETECTED="winvista${PLATFORM,,}-enterprise"
      ;;
    "vistu" | "winvistu" | "windowsvistu" | "windows vistu" )
      VERSION="winvista${PLATFORM,,}-ultimate"
@@ -76,27 +76,27 @@ parseVersion() {
      ;;
    "core11" | "core 11" )
      VERSION="core11"
      DETECTED="win11${PLATFORM,,}"
      [ -z "$DETECTED" ] && DETECTED="win11${PLATFORM,,}"
      ;;
    "tiny11" | "tiny 11" )
      VERSION="tiny11"
      DETECTED="win11${PLATFORM,,}"
      [ -z "$DETECTED" ] && DETECTED="win11${PLATFORM,,}"
      ;;
   "tiny10" | "tiny 10" )
      VERSION="tiny10"
      DETECTED="win10${PLATFORM,,}-ltsc"
      [ -z "$DETECTED" ] && DETECTED="win10${PLATFORM,,}-ltsc"
      ;;
    "iot11" | "11iot" | "win11-iot" | "win11${PLATFORM,,}-iot" | "win11${PLATFORM,,}-enterprise-iot-eval" )
      DETECTED="win11${PLATFORM,,}-iot"
      VERSION="win11${PLATFORM,,}-enterprise-iot-eval"
      [ -z "$DETECTED" ] && DETECTED="win11${PLATFORM,,}-iot"
      ;;
    "iot10" | "10iot" | "win10-iot" | "win10${PLATFORM,,}-iot" | "win10${PLATFORM,,}-enterprise-iot-eval" )
      DETECTED="win10${PLATFORM,,}-iot"
      VERSION="win10${PLATFORM,,}-enterprise-iot-eval"
      [ -z "$DETECTED" ] && DETECTED="win10${PLATFORM,,}-iot"
      ;;
    "ltsc10" | "10ltsc" | "win10-ltsc" | "win10${PLATFORM,,}-ltsc" | "win10${PLATFORM,,}-enterprise-ltsc-eval" )
      DETECTED="win10${PLATFORM,,}-ltsc"
      VERSION="win10${PLATFORM,,}-enterprise-ltsc-eval"
      [ -z "$DETECTED" ] && DETECTED="win10${PLATFORM,,}-ltsc"
      ;;
  esac

+16 −31
Original line number Diff line number Diff line
@@ -279,7 +279,7 @@ verifyFile() {
  local check="$4"

  if [ -n "$size" ] && [[ "$total" != "$size" ]] && [[ "$size" != "0" ]]; then
    warn "The downloaded file has an invalid size: $total bytes, while expected value was: $size bytes. Please report this at $SUPPORT/issues"
    warn "The downloaded file has an unexpected size: $total bytes, while expected value was: $size bytes. Please report this at $SUPPORT/issues"
  fi

  local hash=""
@@ -431,10 +431,9 @@ downloadImage() {
    tried="y"

    if getESD "$TMP/esd" "$version"; then
      local prev="$ISO"
      ISO="${ISO%.*}.esd"
      downloadFile "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$desc" && return 0
      ISO="$prev"
      ISO="$iso"
    fi

  fi
@@ -663,41 +662,27 @@ selectVersion() {
detectVersion() {

  local xml="$1"
  local id=""
  local arch=""
  local id arch
  local tag="ARCH"
  local platform="x64"
  local compat="$platform"

  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
      ;;
    "0" ) platform="x86"; compat="x64" ;;
    "9" ) platform="x64"; compat="$platform" ;;
    "12" )platform="arm64"; compat="$platform" ;;
  esac

  id=$(selectVersion "DISPLAYNAME" "$xml" "$platform")
  [ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0

  id=$(selectVersion "PRODUCTNAME" "$xml" "$platform")
  [ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0
  if [[ "${compat,,}" != "${PLATFORM,,}" ]]; then
    error "You cannot boot ${platform^^} images on a $PLATFORM cpu!"
    exit 67
  fi

  id=$(selectVersion "NAME" "$xml" "$platform")
  id=$(selectVersion "DISPLAYNAME" "$xml" "$platform")
  [ -z "$id" ] && id=$(selectVersion "PRODUCTNAME" "$xml" "$platform")
  [ -z "$id" ] && id=$(selectVersion "NAME" "$xml" "$platform")
  [ -n "$id" ] && [[ "${id,,}" != *"unknown"* ]] && echo "$id" && return 0

  return 0
@@ -711,8 +696,8 @@ detectImage() {

  XML=""

  if [ -z "$DETECTED" ] && [[ "${version,,}" != "http"* ]]; then
    [ -z "$CUSTOM" ] && DETECTED="$version"
  if [ -z "$DETECTED" ] && [ -z "$CUSTOM" ]; then
    [[ "${version,,}" != "http"* ]] && DETECTED="$version"
  fi

  if [ -n "$DETECTED" ]; then