#!/bin/bash
set -e

# This script creates the yum repos for the .rpm files generated by hack/make/build-rpm
#
# The following can then be used as a yum repo:
# 	http://yum.dockerproject.org/repo/$release/$distro/$distro-version
#
# For example:
# 	http://yum.dockerproject.org/repo/main/fedora/23
# 	http://yum.dockerproject.org/repo/testing/centos/7
# 	http://yum.dockerproject.org/repo/experimental/fedora/23
# 	http://yum.dockerproject.org/repo/main/centos/7
#
# ... and so on and so forth for the builds created by hack/make/build-rpm

: ${DOCKER_RELEASE_DIR:=$DEST}
YUMDIR=$DOCKER_RELEASE_DIR/yum/repo
: ${GPG_KEYID:=releasedocker}

# get the release
release="main"

if [[ "$VERSION" == *-rc* ]]; then
	release="testing"
fi

if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
	release="experimental"
fi

# Setup the yum repo
for dir in bundles/$VERSION/build-rpm/*/; do
	version="$(basename "$dir")"
	suite="${version##*-}"
	distro="${version%-*}"

	REPO=$YUMDIR/$release/$distro

	# if the directory does not exist, initialize the yum repo
	if [[ ! -d $REPO/$suite/Packages ]]; then
		mkdir -p "$REPO/$suite/Packages"

		createrepo --pretty "$REPO/$suite"
	fi

	# path to rpms
	RPMFILE=( "bundles/$VERSION/build-rpm/$version/RPMS/"*"/docker-engine"*.rpm "bundles/$VERSION/build-rpm/$version/SRPMS/docker-engine"*.rpm )

	# if we have a $GPG_PASSPHRASE we may as well
	# sign the rpms before adding to repo
	if [ ! -z $GPG_PASSPHRASE ]; then
		# export our key to rpm import
		gpg --armor --export "$GPG_KEYID" > /tmp/gpg
		rpm --import /tmp/gpg

		# sign the rpms
		echo "yes" | setsid rpm \
			--define "_gpg_name $GPG_KEYID" \
			--define "_signature gpg" \
			--define "__gpg_check_password_cmd /bin/true" \
			--define "__gpg_sign_cmd %{__gpg} gpg --batch --no-armor --digest-algo 'sha512' --passphrase '$GPG_PASSPHRASE' --no-secmem-warning -u '%{_gpg_name}' --sign --detach-sign --output %{__signature_filename} %{__plaintext_filename}" \
			--resign "${RPMFILE[@]}"
	fi

	# copy the rpms to the packages folder
	cp "${RPMFILE[@]}" "$REPO/$suite/Packages"

	# update the repo
	createrepo --pretty --update "$REPO/$suite"
done
