#!/usr/bin/env bash
set -euo pipefail

# prep
dnf install jq -y
workdir=$(mktemp -d)
built_dir=${COMPILED_DIR:-/compiled}/polycat
mkdir -p $built_dir
version_file=$built_dir/version
touch $version_file

# check whether it's up-to-date
# check version
version=$(curl 'https://api.github.com/repos/2IMT/polycat/releases/latest' | jq '.tag_name' -r | tr -d 'v')
if grep -q $version $version_file; then
    echo "already up to date, exiting"
    exit
fi

# get build deps
dnf install make g++ -y
# get source
cd $workdir
curl -LO $(curl 'https://api.github.com/repos/2IMT/polycat/releases/latest' | jq '.assets' | jq '.[0].browser_download_url' -r)
tar -xzf polycat-$version.tar.gz
mv ./polycat-$version ./polycat

# compilation
cd $workdir/polycat
make

# build .tar.zst archive
cd $workdir
mkdir ./polycat-built
mv ./polycat/build/polycat ./polycat-built/
mv ./polycat/res/polycat.ttf ./polycat-built/
mv ./polycat/res/polycat-config ./polycat-built/
mkdir -p ${COMPILED_DIR:-/compiled}/polycat/
cd $workdir/polycat-built/
tar --zstd -cf $built_dir/polycat.tar.zst .
echo $version >$version_file

echo "polycat updated to $version"