#!/usr/bin/env bash
set -e

# This script modifies the install.sh script for domains and keys other than
# those used by the primary opensource releases.
#
# You can provide `url`, `yum_url`, `apt_url` and optionally `gpg_fingerprint`
# or `GPG_KEYID` as environment variables, or the defaults for open source are used.
#
# The lower-case variables are substituted into install.sh.
#
# gpg_fingerprint and GPG_KEYID are optional, defaulting to the opensource release
# key ("releasedocker"). Other GPG_KEYIDs will require you to mount a volume with
# the correct contents to /root/.gnupg.
#
# It outputs the modified `install.sh` file to $DOCKER_RELEASE_DIR (default: $DEST)
#
# Example usage:
#
# docker run \
# --rm \
# --privileged \
# -e "GPG_KEYID=deadbeef" \
# -e "GNUPGHOME=/root/.gnupg" \
# -v $HOME/.gnupg:/root/.gnupg \
# -v $(pwd):/go/src/github.com/docker/docker/bundles \
# "$IMAGE_DOCKER" \
# hack/make.sh install-script

: ${DOCKER_RELEASE_DIR:=$DEST}
: ${GPG_KEYID:=releasedocker}

DEFAULT_URL="https://get.docker.com/"
DEFAULT_APT_URL="https://apt.dockerproject.org"
DEFAULT_YUM_URL="https://yum.dockerproject.org"
DEFAULT_GPG_FINGERPRINT="58118E89F3A912897C070ADBF76221572C52609D"

: ${url:=$DEFAULT_URL}
: ${apt_url:=$DEFAULT_APT_URL}
: ${yum_url:=$DEFAULT_YUM_URL}
if [[ "$GPG_KEYID" == "releasedocker" ]] ; then
	: ${gpg_fingerprint:=$DEFAULT_GPG_FINGERPRINT}
fi

DEST_FILE="$DOCKER_RELEASE_DIR/install.sh"

bundle_install_script() {
	mkdir -p "$DOCKER_RELEASE_DIR"

	if [[ -z "$gpg_fingerprint" ]] ; then
		# NOTE: if no key matching key is in /root/.gnupg, this will fail
		gpg_fingerprint=$(gpg --with-fingerprint -k "$GPG_KEYID" | grep "Key fingerprint" | awk -F "=" '{print $2};' | tr -d ' ')
	fi

	cp hack/install.sh "$DEST_FILE"
	sed -i.bak 's#^url=".*"$#url="'"$url"'"#' "$DEST_FILE"
	sed -i.bak 's#^apt_url=".*"$#apt_url="'"$apt_url"'"#' "$DEST_FILE"
	sed -i.bak 's#^yum_url=".*"$#yum_url="'"$yum_url"'"#' "$DEST_FILE"
	sed -i.bak 's#^gpg_fingerprint=".*"$#gpg_fingerprint="'"$gpg_fingerprint"'"#' "$DEST_FILE"
	rm "${DEST_FILE}.bak"
}

bundle_install_script
