#!/bin/bash

rm -rf autogen

cat > dockerversion/version_autogen.go <<DVEOF
// +build autogen

// Package dockerversion is auto-generated at build-time
package dockerversion

// Default build-time variable for library-import.
// This file is overridden on build with build-time informations.
const (
	GitCommit string = "$GITCOMMIT"
	Version   string = "$VERSION"
	BuildTime string = "$BUILDTIME"

	IAmStatic string = "${IAMSTATIC:-true}"
	InitSHA1  string = "$DOCKER_INITSHA1"
	InitPath  string = "$DOCKER_INITPATH"
)
// AUTOGENERATED FILE; see $BASH_SOURCE
DVEOF

# Compile the Windows resources into the sources
mkdir -p autogen/winresources
cat > autogen/winresources/resources.go <<WREOF
// Package winresources is auto-generated at build-time
// AUTOGENERATED FILE; see $BASH_SOURCE
package winresources

/*

This package is for embedding a manifest file and an icon into docker.exe.
The benefit of this is that a manifest file does not need to be alongside
the .exe, and there is an icon when docker runs, or viewed through Windows
explorer.

When make binary is run, the Dockerfile prepares the build environment by:

 - Cloning github.com/akavel/rsrc

 - Go-installing the rsrc executable

make.sh invokes hack/make/.go-autogen to:

 - Run rsrc to create a binary file (autogen/winresources/rsrc.syso) that 
   contains the manifest and icon. This file is automatically picked up by 
   'go build', so no post-processing steps are required. The sources for 
   rsrc.syso are under hack/make/.resources-windows.

*/
WREOF
if [ "$(go env GOOS)" = 'windows' ]; then
	rsrc \
		-manifest hack/make/.resources-windows/docker.exe.manifest \
		-ico      hack/make/.resources-windows/docker.ico \
		-o        autogen/winresources/rsrc.syso > /dev/null
fi
