DockerCLI/scripts/build/mkversioninfo

65 lines
2.0 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env sh
set -eu
: "${PACKAGER_NAME=}"
. ./scripts/build/.variables
# 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/')
VERSION_MAJOR=$(echo "${VERSION_QUAD:-0}" | cut -d. -f1)
VERSION_MINOR=$(echo "${VERSION_QUAD:-0}" | cut -d. -f2)
VERSION_PATCH=$(echo "${VERSION_QUAD:-0}" | cut -d. -f3)
VERSION_BUILD=$(echo "${VERSION_QUAD:-0}" | cut -d. -f4)
# Generate versioninfo.json to be able to create a syso file which contains
# Microsoft Windows Version Information and an icon using goversioninfo.
# https://docs.microsoft.com/en-us/windows/win32/menurc/stringfileinfo-block
# https://github.com/josephspurrier/goversioninfo/blob/master/testdata/resource/versioninfo.json
cat > ./cli/winresources/versioninfo.json <<EOL
{
"FixedFileInfo":
{
"FileVersion": {
"Major": ${VERSION_MAJOR},
"Minor": ${VERSION_MINOR#0},
"Patch": ${VERSION_PATCH},
"Build": ${VERSION_BUILD}
},
"FileFlagsMask": "3f",
"FileFlags ": "00",
"FileOS": "040004",
"FileType": "01",
"FileSubType": "00"
},
"StringFileInfo":
{
"Comments": "",
"CompanyName": "${PACKAGER_NAME}",
"FileDescription": "Docker Client",
"FileVersion": "${VERSION}",
"InternalName": "",
"LegalCopyright": "Copyright © 2015-$(date +'%Y') Docker Inc.",
"LegalTrademarks": "",
"OriginalFilename": "$(basename "${TARGET}")",
"PrivateBuild": "",
"ProductName": "Docker Client",
"ProductVersion": "${VERSION}",
"SpecialBuild": "${GITCOMMIT}"
},
"VarFileInfo":
{
"Translation": {
"LangID": "0409",
"CharsetID": "04B0"
}
}
}
EOL
(set -x ; cat ./cli/winresources/versioninfo.json)
# Create winresources package stub if removed while using tmpfs in Dockerfile
if [ ! -f "./cli/winresources/winresources.go" ]; then
echo "package winresources" > "./cli/winresources/winresources.go"
fi