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

# untar sources
mkdir -p /root/build-deb/xray
tar -C /root/build-deb -xzf /sources/xray.tgz

# link them to their canonical path
mkdir -p /go/src/github.com/xtls
ln -snf /root/build-deb/xray /go/src/github.com/xtls/xray-core

EPOCH="${EPOCH:-}"
EPOCH_SEP=""
if [[ -n "$EPOCH" ]]; then
	EPOCH_SEP=":"
fi

if [[ -z "${DEB_VERSION}" ]]; then
	echo "DEB_VERSION is required to build deb packages"
	exit 1
fi

echo VERSION AAA ${VERSION}

VERSION=${VERSION:-$(cat VERSION)}

debSource="$(awk -F ': ' '$1 == "Source" { print $2; exit }' debian/control)"
debMaintainer="$(awk -F ': ' '$1 == "Maintainer" { print $2; exit }' debian/control)"
debDate="$(date --rfc-2822)"

# Include an extra `1` in the version, in case we ever would have to re-build an
# already published release with a packaging-only change.
pkgRevision=1

# Generate changelog. The version/name of the generated packages are based on this.
#
# Resulting packages are formatted as;
#
# - name of the package (e.g., "docker-ce")
# - version (e.g., "23.0.0~beta.0")
# - pkgRevision (usually "-0", see above), which allows updating packages with
#   packaging-only changes (without a corresponding release of the software
#   that's packaged).
# - distro (e.g., "ubuntu")
# - VERSION_ID (e.g. "22.04" or "11") this must be "sortable" to make sure that
#   packages are upgraded when upgrading to a newer distro version ("codename"
#   cannot be used for this, as they're not sorted)
# - SUITE ("codename"), e.g. "jammy" or "bullseye". This is mostly for convenience,
#   because some places refer to distro versions by codename, others by version.
#   we prefix the codename with a tilde (~), which effectively excludes it from
#   version comparison.
#
# Note that while the `${EPOCH}${EPOCH_SEP}` is part of the version, it is not
# included in the package's *filename*. (And if you're wondering: we needed the
# EPOCH because of our use of CalVer, which made version comparing not work in
# some cases).
#
# Examples:
#
# docker-ce_23.0.0~beta.0-1~debian.11~bullseye_amd64.deb
# docker-ce_23.0.0~beta.0-1~ubuntu.22.04~jammy_amd64.deb
cat > "debian/changelog" <<-EOF
$debSource (${EPOCH}${EPOCH_SEP}${DEB_VERSION}-${pkgRevision}~${DISTRO}.${VERSION_ID}~${SUITE}) $SUITE; urgency=low
  * Version: ${VERSION}
 -- $debMaintainer  $debDate
EOF
# The space above at the start of the line for the debMaintainer is very important

echo VERSION BBB ${VERSION}
dpkg-buildpackage -uc -us -I.git
destination="/build"
mkdir -p "$destination"
mv -v /root/xray* "$destination"