#!/bin/bash
# Copyright 2017 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

# build.docker builds and publishes a Docker image for
# a given Go+BoringCrypto release.

set -e

# With no arguments, use the most recent linux-amd64 release in the RELEASES file.
case "$#" in
0)
	version=$(grep linux-amd64 RELEASES | tail -1 | awk '{print $1}');;
1)
	version="$1";;
*)
	echo 'usage: build.docker [version]' >&2
	exit 2
esac

url="$(grep "^$version .* linux-amd64 " RELEASES | awk '{print $4}')"
sha256="$(grep "^$version .* linux-amd64 " RELEASES | awk '{print $5}')"
if [ "$sha256" = "" ]; then
	echo "cannot find $version in RELEASES file" >&2
	exit 2
fi

# Build a temporary directory with a Dockerfile.
dir=$(mktemp -d)
trap "rm -rf $dir" EXIT

if echo "$url" | grep '!' >/dev/null; then
	# ! is sed delimiter below. Should never happen.
	echo "URL contains an exclamation mark!" >&2
	exit 2
fi

dversion=$(echo "$version" | sed 's/^go//')
sed "s!UUU!$url!; s/SSS/$sha256/; s/VVV/$dversion/" dockerfile.in >$dir/Dockerfile

docker build --pull -t goboring/golang:$dversion $dir
docker run goboring/golang:$dversion go version
docker run goboring/golang:$dversion go tool nm /usr/local/go/bin/go >$dir/nm
if ! grep crypto/internal/boring/sig.BoringCrypto $dir/nm >/dev/null; then
	echo 'built docker image but did NOT find sig.BoringCrypto in go command!' >&2
	exit 2
fi
if egrep 'crypto/sha256\.\(\*digest\)' $dir/nm >/dev/null; then
	echo 'built docker image but DID find sha256.(*digest) in go command unexpectedly!' >&2
	exit 2
fi
docker push goboring/golang:$dversion

echo
echo published as goboring/golang:$dversion
