#!/usr/bin/env bash

PKGVERSION="${VERSION//-/'~'}"
# if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better
if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
	GIT_UNIX="$(git log -1 --pretty='%at')"
	GIT_DATE="$(date --date "@$GIT_UNIX" +'%Y%m%d.%H%M%S')"
	GIT_COMMIT="$(git log -1 --pretty='%h')"
	GIT_VERSION="git${GIT_DATE}.0.${GIT_COMMIT}"
	# GIT_VERSION is now something like 'git20150128.112847.0.17e840a'
	PKGVERSION="$PKGVERSION~$GIT_VERSION"
fi

# $ dpkg --compare-versions 1.5.0 gt 1.5.0~rc1 && echo true || echo false
# true
# $ dpkg --compare-versions 1.5.0~rc1 gt 1.5.0~git20150128.112847.17e840a && echo true || echo false
# true
# $ dpkg --compare-versions 1.5.0~git20150128.112847.17e840a gt 1.5.0~dev~git20150128.112847.17e840a && echo true || echo false
# true

# ie, 1.5.0 > 1.5.0~rc1 > 1.5.0~git20150128.112847.17e840a > 1.5.0~dev~git20150128.112847.17e840a

PACKAGE_ARCHITECTURE="$(dpkg-architecture -qDEB_HOST_ARCH)"
PACKAGE_URL="https://www.docker.com/"
PACKAGE_MAINTAINER="support@docker.com"
PACKAGE_DESCRIPTION="Linux container runtime
Docker complements LXC with a high-level API which operates at the process
level. It runs unix processes with strong guarantees of isolation and
repeatability across servers.
Docker is a great building block for automating distributed systems:
large-scale web deployments, database clusters, continuous deployment systems,
private PaaS, service-oriented architectures, etc."
PACKAGE_LICENSE="Apache-2.0"

# Build docker as an ubuntu package using FPM and REPREPRO (sue me).
# bundle_binary must be called first.
bundle_ubuntu() {
	DIR="$ABS_DEST/build"

	# Include our udev rules
	mkdir -p "$DIR/etc/udev/rules.d"
	cp contrib/udev/80-docker.rules "$DIR/etc/udev/rules.d/"

	# Include our init scripts
	mkdir -p "$DIR/etc/init"
	cp contrib/init/upstart/docker.conf "$DIR/etc/init/"
	mkdir -p "$DIR/etc/init.d"
	cp contrib/init/sysvinit-debian/docker "$DIR/etc/init.d/"
	mkdir -p "$DIR/etc/default"
	cp contrib/init/sysvinit-debian/docker.default "$DIR/etc/default/docker"
	mkdir -p "$DIR/lib/systemd/system"
	cp contrib/init/systemd/docker.{service,socket} "$DIR/lib/systemd/system/"

	# Include contributed completions
	mkdir -p "$DIR/etc/bash_completion.d"
	cp contrib/completion/bash/docker "$DIR/etc/bash_completion.d/"
	mkdir -p "$DIR/usr/share/zsh/vendor-completions"
	cp contrib/completion/zsh/_docker "$DIR/usr/share/zsh/vendor-completions/"
	mkdir -p "$DIR/etc/fish/completions"
	cp contrib/completion/fish/docker.fish "$DIR/etc/fish/completions/"

	# Include man pages
	make manpages
	manRoot="$DIR/usr/share/man"
	mkdir -p "$manRoot"
	for manDir in man/man?; do
		manBase="$(basename "$manDir")" # "man1"
		for manFile in "$manDir"/*; do
			manName="$(basename "$manFile")" # "docker-build.1"
			mkdir -p "$manRoot/$manBase"
			gzip -c "$manFile" > "$manRoot/$manBase/$manName.gz"
		done
	done

	# Copy the binary
	# This will fail if the binary bundle hasn't been built
	mkdir -p "$DIR/usr/bin"
	cp "$DEST/../binary/docker-$VERSION" "$DIR/usr/bin/docker"

	# Generate postinst/prerm/postrm scripts
	cat > "$DEST/postinst" <<'EOF'
#!/bin/sh
set -e
set -u

if [ "$1" = 'configure' ] && [ -z "$2" ]; then
	if ! getent group docker > /dev/null; then
		groupadd --system docker
	fi
fi

if ! { [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | grep -q upstart; }; then
	# we only need to do this if upstart isn't in charge
	update-rc.d docker defaults > /dev/null || true
fi
if [ -n "$2" ]; then
	_dh_action=restart
else
	_dh_action=start
fi
service docker $_dh_action 2>/dev/null || true

#DEBHELPER#
EOF
	cat > "$DEST/prerm" <<'EOF'
#!/bin/sh
set -e
set -u

service docker stop 2>/dev/null || true

#DEBHELPER#
EOF
	cat > "$DEST/postrm" <<'EOF'
#!/bin/sh
set -e
set -u

if [ "$1" = "purge" ] ; then
	update-rc.d docker remove > /dev/null || true
fi

# In case this system is running systemd, we make systemd reload the unit files
# to pick up changes.
if [ -d /run/systemd/system ] ; then
	systemctl --system daemon-reload > /dev/null || true
fi

#DEBHELPER#
EOF
	# TODO swaths of these were borrowed from debhelper's auto-inserted stuff, because we're still using fpm - we need to use debhelper instead, and somehow reconcile Ubuntu that way
	chmod +x "$DEST/postinst" "$DEST/prerm" "$DEST/postrm"

	(
		# switch directories so we create *.deb in the right folder
		cd "$DEST"

		# create lxc-docker-VERSION package
		fpm -s dir -C "$DIR" \
			--name "lxc-docker-$VERSION" --version "$PKGVERSION" \
			--after-install "$ABS_DEST/postinst" \
			--before-remove "$ABS_DEST/prerm" \
			--after-remove "$ABS_DEST/postrm" \
			--architecture "$PACKAGE_ARCHITECTURE" \
			--prefix / \
			--depends iptables \
			--deb-recommends aufs-tools \
			--deb-recommends ca-certificates \
			--deb-recommends git \
			--deb-recommends xz-utils \
			--deb-recommends 'cgroupfs-mount | cgroup-lite' \
			--deb-suggests apparmor \
			--description "$PACKAGE_DESCRIPTION" \
			--maintainer "$PACKAGE_MAINTAINER" \
			--conflicts docker \
			--conflicts docker.io \
			--conflicts lxc-docker-virtual-package \
			--provides lxc-docker \
			--provides lxc-docker-virtual-package \
			--replaces lxc-docker \
			--replaces lxc-docker-virtual-package \
			--url "$PACKAGE_URL" \
			--license "$PACKAGE_LICENSE" \
			--config-files /etc/udev/rules.d/80-docker.rules \
			--config-files /etc/init/docker.conf \
			--config-files /etc/init.d/docker \
			--config-files /etc/default/docker \
			--deb-compression gz \
			-t deb .
		# TODO replace "Suggests: cgroup-lite" with "Recommends: cgroupfs-mount | cgroup-lite" once cgroupfs-mount is available

		# create empty lxc-docker wrapper package
		fpm -s empty \
			--name lxc-docker --version "$PKGVERSION" \
			--architecture "$PACKAGE_ARCHITECTURE" \
			--depends lxc-docker-$VERSION \
			--description "$PACKAGE_DESCRIPTION" \
			--maintainer "$PACKAGE_MAINTAINER" \
			--url "$PACKAGE_URL" \
			--license "$PACKAGE_LICENSE" \
			--deb-compression gz \
			-t deb
	)

	# clean up after ourselves so we have a clean output directory
	rm "$DEST/postinst" "$DEST/prerm" "$DEST/postrm"
	rm -r "$DIR"
}

bundle_ubuntu
