#!/bin/bash

DEST=$1

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="http://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=$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 contributed man pages
	docs/man/md2man-all.sh -q
	manRoot="$DIR/usr/share/man"
	mkdir -p "$manRoot"
	for manDir in docs/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 $DEST/postinst \
			--before-remove $DEST/prerm \
			--after-remove $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' \
			--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
