#!/usr/bin/env sh

quadVersionNum() {
	num=$(echo "${1:-0}" | cut -d. -f"$2")
	if [ "$num" != "0" ]; then
		echo "${num#0}"
	else
		echo "$num"
	fi
}

# Create version quad for Windows of the form major.minor.patch.build
VERSION_QUAD=$(printf "%s" "$VERSION" | sed -re 's/^([0-9.]*).*$/\1/' | sed -re 's/\.$//' | sed -re 's/^[0-9]+$/\0\.0/' | sed -re 's/^[0-9]+\.[0-9]+$/\0\.0/' | sed -re 's/^[0-9]+\.[0-9]+\.[0-9]+$/\0\.0/')

# Generate winres.json to be able to create a syso file which contains
# Microsoft Windows Version Information and an icon using go-winres.
# https://docs.microsoft.com/en-us/windows/win32/menurc/stringfileinfo-block
# https://github.com/tc-hib/go-winres#json-format
cat > "./cli/winresources/${BINARY_NAME}/winres.json" << EOL
{
  "RT_GROUP_ICON": {
    "#1": {
      "0409": "../../winresources/docker.ico"
    }
  },
  "RT_MANIFEST": {
    "#1": {
      "0409": {
        "identity": {},
        "description": "Docker Engine",
        "minimum-os": "vista",
        "execution-level": "",
        "ui-access": false,
        "auto-elevate": false,
        "dpi-awareness": "unaware",
        "disable-theming": false,
        "disable-window-filtering": false,
        "high-resolution-scrolling-aware": false,
        "ultra-high-resolution-scrolling-aware": false,
        "long-path-aware": false,
        "printer-driver-isolation": false,
        "gdi-scaling": false,
        "segment-heap": false,
        "use-common-controls-v6": false
      }
    }
  },
  "RT_MESSAGETABLE": {
    "#1": {
      "0409": "../../winresources/event_messages.bin"
    }
  },
  "RT_VERSION": {
    "#1": {
      "0409": {
        "fixed": {
          "file_version": "$(quadVersionNum "$VERSION_QUAD" 1).$(quadVersionNum "$VERSION_QUAD" 2).$(quadVersionNum "$VERSION_QUAD" 3).$(quadVersionNum "$VERSION_QUAD" 4)",
          "product_version": "$(quadVersionNum "$VERSION_QUAD" 1).$(quadVersionNum "$VERSION_QUAD" 2).$(quadVersionNum "$VERSION_QUAD" 3).$(quadVersionNum "$VERSION_QUAD" 4)",
          "type": "Unknown"
        },
        "info": {
          "0000": {
            "CompanyName": "${PACKAGER_NAME}",
            "FileVersion": "${VERSION}",
            "LegalCopyright": "Copyright © 2015-$(date +'%Y') Docker Inc.",
            "OriginalFileName": "$(basename "${BINARY_FULLNAME}")",
            "ProductName": "${PRODUCT}",
            "ProductVersion": "${VERSION}",
            "SpecialBuild": "${GITCOMMIT}"
          }
        }
      }
    }
  }
}
EOL
(
	set -x
	cat "./cli/winresources/${BINARY_NAME}/winres.json"
)

# Create winresources package stub if removed while using tmpfs in Dockerfile
if [ ! -f "./cli/winresources/${BINARY_NAME}/winresources.go" ]; then
	echo "package winresources" > "./cli/winresources/${BINARY_NAME}/winresources.go"
fi
