#!/usr/bin/env bash

#
# This script is used to test AUR builds locally in a clean Arch Linux Docker container.
# It is not used in the AUR builds in any way, and is only for debugging purposes.
#

set -e

# Determine the current versions and if we should build or not
aurversion=$(grep pkgver .SRCINFO | awk -F= '{print $2}' | sed -e 's/ //g')
githubversion=$(curl https://api.github.com/repos/ferdium/ferdium-app/releases 2>/dev/null| jq -r 'map(select(.prerelease == true)) | first | .name')

# Convert versions to AUR friendly names
newpkgverorg="$(echo -n "${githubversion}" | sed 's/^v//')"
newpkgver="$(echo -n "${newpkgverorg}" | sed 's/\([^-]*-\)g/r\1/;s/-/./g' | sed 's/^v//')"

echo "Current AUR version: [${aurversion}]"
echo "Current GitHub version: [${githubversion}]"
echo "Future AUR version: [${newpkgver}]"

if [ "${aurversion}" = "${newpkgver}" ]
then
	echo -n "Versions are identical, if you wish to build anyway, press Enter, otherwise press Ctrl-C now: "
	read foo
	echo "Okay, here we go! Creating the build script..."
fi

# Start the build
cat << EOF > tempscript.sh
set -e

# System set-up
pacman-key --init
pacman -Sy archlinux-keyring --noconfirm
pacman -Syu --noconfirm
pacman -S pacman-contrib git openssh --noconfirm
echo 'yay ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
useradd -d /home/yay -g users -m -s /bin/bash yay

# Build the package
cd /tmp
sudo -u yay git clone https://aur@aur.archlinux.org/ferdium-nightly-bin.git
cd /tmp/ferdium-nightly-bin
EOF
cat << 'EOF' >> tempscript.sh
sed -i -e "s/^pkgverorg=.*/pkgverorg='${newpkgverorg}'/g" PKGBUILD
sed -i -e "s/^pkgver=.*/pkgver='${newpkgver}'/g" PKGBUILD
EOF
cat << EOF >> tempscript.sh
sudo -u yay updpkgsums
sudo -u yay makepkg -s --noconfirm
sudo -u yay makepkg --printsrcinfo > .SRCINFO
EOF

echo "Starting docker container with the build script..."

docker run --rm -e newpkgverorg=${newpkgverorg} -e newpkgver=${newpkgver} -v $(pwd)/tempscript.sh:/root/tempscript.sh archlinux:base-devel /bin/bash /root/tempscript.sh

echo "Cleaning up..."
rm -rf tempscript.sh
