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

# This script updates the apt repo in $DOCKER_RELEASE_DIR/apt/repo.
# This script is a "fix all" for any sort of problems that might have occurred with
# the Release or Package files in the repo.
# It should only be used in the rare case of extreme emergencies to regenerate
# Release and Package files for the apt repo.
#
# NOTE: Always be sure to re-sign the repo with hack/make/sign-repos after running
# this script.

: ${DOCKER_RELEASE_DIR:=$DEST}
APTDIR=$DOCKER_RELEASE_DIR/apt/repo

# supported arches/sections
arches=( amd64 i386 )

# Preserve existing components but don't add any non-existing ones
for component in main testing experimental ; do
	if ls "$APTDIR/dists/*/$component" >/dev/null 2>&1 ; then
		components+=( $component )
	fi
done

dists=( $(find "${APTDIR}/dists" -maxdepth 1 -mindepth 1 -type d) )

# override component if it is set
if [ "$COMPONENT" ]; then
	components=( $COMPONENT )
fi

# release the debs
for version in "${dists[@]}"; do
	for component in "${components[@]}"; do
		codename="${version//debootstrap-}"

		# update the filelist for this codename/component
		find "$APTDIR/pool/$component" \
			-name *~${codename#*-}*.deb > "$APTDIR/dists/$codename/$component/filelist"
	done
done

# run the apt-ftparchive commands so we can have pinning
apt-ftparchive generate "$APTDIR/conf/apt-ftparchive.conf"

for dist in "${dists[@]}"; do
	version=$(basename "$dist")
	for component in "${components[@]}"; do
		codename="${version//debootstrap-}"

		apt-ftparchive \
			-o "APT::FTPArchive::Release::Codename=$codename" \
			-o "APT::FTPArchive::Release::Suite=$codename" \
			-c "$APTDIR/conf/docker-engine-release.conf" \
			release \
			"$APTDIR/dists/$codename" > "$APTDIR/dists/$codename/Release"

		for arch in "${arches[@]}"; do
			apt-ftparchive \
				-o "APT::FTPArchive::Release::Codename=$codename" \
				-o "APT::FTPArchive::Release::Suite=$codename" \
				-o "APT::FTPArchive::Release::Component=$component" \
				-o "APT::FTPArchive::Release::Architecture=$arch" \
				-c "$APTDIR/conf/docker-engine-release.conf" \
				release \
				"$APTDIR/dists/$codename/$component/binary-$arch" > "$APTDIR/dists/$codename/$component/binary-$arch/Release"
		done
	done
done
