#!/usr/bin/env bash

rm -rf autogen

source hack/dockerfile/install/runc.installer
source hack/dockerfile/install/tini.installer
source hack/dockerfile/install/containerd.installer

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 information.
const (
	GitCommit             string = "$GITCOMMIT"
	Version               string = "$VERSION"
	BuildTime             string = "$BUILDTIME"
	IAmStatic             string = "${IAMSTATIC:-true}"
	PlatformName          string = "${PLATFORM}"
	ProductName           string = "${PRODUCT}"
	DefaultProductLicense string = "${DEFAULT_PRODUCT_LICENSE}"
)

// Code generated by hack/make/.go-autogen. DO NOT EDIT.
DVEOF

cat > dockerversion/version_autogen_unix.go <<DVEOF
// +build autogen,!windows

// 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 information.
const (
	InitCommitID string = "${TINI_COMMIT}"
)

// Code generated by hack/make/.go-autogen. DO NOT EDIT.
DVEOF

# Compile the Windows resources into the sources
if [ "$(go env GOOS)" = "windows" ]; then
	mkdir -p autogen/winresources/tmp autogen/winresources/dockerd
	cp hack/make/.resources-windows/resources.go autogen/winresources/dockerd/

	if [ "$(go env GOHOSTOS)" == "windows" ]; then
		WINDRES=windres
		WINDMC=windmc
	else
		# Cross compiling
		WINDRES=x86_64-w64-mingw32-windres
		WINDMC=x86_64-w64-mingw32-windmc
	fi

	# Generate a Windows file version of the form major,minor,patch,build (with any part optional)
	if [ ! -v VERSION_QUAD ]; then
		VERSION_QUAD=$(echo -n $VERSION | sed -re 's/^([0-9.]*).*$/\1/' | tr . ,)
	fi

	# Pass version and commit information into the resource compiler
	defs=
	[ ! -z $VERSION ]      && defs="$defs -D DOCKER_VERSION=\"$VERSION\""
	[ ! -z $VERSION_QUAD ] && defs="$defs -D DOCKER_VERSION_QUAD=$VERSION_QUAD"
	[ ! -z $GITCOMMIT ]    && defs="$defs -D DOCKER_COMMIT=\"$GITCOMMIT\""

	function makeres {
		${WINDRES} \
			-i hack/make/.resources-windows/$1 \
			-o $3 \
			-F $2 \
			--use-temp-file \
			-I autogen/winresources/tmp \
			$defs
	}

	${WINDMC} \
		hack/make/.resources-windows/event_messages.mc \
		-h autogen/winresources/tmp \
		-r autogen/winresources/tmp

	makeres dockerd.rc pe-x86-64 autogen/winresources/dockerd/rsrc_amd64.syso

	rm -r autogen/winresources/tmp
fi