#!/bin/bash

set -ex

UBUNTU_CODENAME=focal
MAINLINE_KERNEL_VERSION=5.15
UBUNTU_KERNEL_BRANCH=hwe-${MAINLINE_KERNEL_VERSION}
TUXEDO_KERNEL_BRANCH=tuxedo-${MAINLINE_KERNEL_VERSION}

echo "===Starting auto-update.==="

SCRIPT=$(realpath "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
cd "$SCRIPTPATH"

echo "===Fetching newest version from upstream.==="

if git remote | grep ubuntu-${UBUNTU_CODENAME}; then
    git remote set-url ubuntu-${UBUNTU_CODENAME} https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-meta/+git/${UBUNTU_CODENAME}
    git fetch ubuntu-${UBUNTU_CODENAME} -p
else
    git remote add -f --tags ubuntu-${UBUNTU_CODENAME} https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-meta/+git/${UBUNTU_CODENAME}
fi

CURRENT_VERSION=$(grep -Pom1 '(?<=^linux-meta-tuxedo-20.04 \().*(?=\))' debian/changelog || true)
CURRENT_ABI=${CURRENT_VERSION%.*}
CURRENT_ABI_POSTFIX=${CURRENT_ABI#*~}
CURRENT_ABI_SHORT=${CURRENT_ABI%~*}
CURRENT_ABI_SHORTER=${CURRENT_ABI_SHORT%.*}
CURRENT_ABI_BASE=${CURRENT_ABI_SHORTER%.*}.$((${CURRENT_ABI_SHORTER##*.} - 10000)).${CURRENT_ABI_SHORT##*.}~${CURRENT_ABI_POSTFIX}
NEWEST_VERSION=$(git describe --tags ubuntu-${UBUNTU_CODENAME}/${UBUNTU_KERNEL_BRANCH} --abbrev=0 | grep -Po "(?<=^Ubuntu-${UBUNTU_KERNEL_BRANCH}-).*(?=$)" | tr '_' '~')
NEWEST_ABI=${NEWEST_VERSION%.*}

echo "Current Version Base: $CURRENT_ABI_BASE"
echo "Newest Version Base: $NEWEST_ABI"

if [ $CURRENT_ABI_BASE = $NEWEST_ABI ]; then
    echo "===Version already up to date. Exiting.==="
    exit
fi

echo "===Start metapackage update.==="

echo "===Checking out correct Ubuntu kernel.==="
NEWEST_ABI_NORMALIZED=$(echo $NEWEST_ABI | sed -e 's/\./-/3' | tr '~' '_')
NEWEST_UPSTREAM_NUMBER=${NEWEST_ABI_NORMALIZED%-*}
NEWEST_ABI_BUILD_POSTFIX_NUMBER=${NEWEST_ABI_NORMALIZED#*-}
NEWEST_ABI_NUMBER=${NEWEST_ABI_BUILD_POSTFIX_NUMBER%%.*}
NEWEST_TUXEDO_TAG=Ubuntu-${TUXEDO_KERNEL_BRANCH}-${NEWEST_UPSTREAM_NUMBER}-$((${NEWEST_ABI_NUMBER} + 10000)).${NEWEST_ABI_BUILD_POSTFIX_NUMBER#*.}.1tux1
if [ -z $LINUX_REPO_URL ]; then
    LINUX_REPO_URL="https://github.com/tuxedocomputers/linux.git"
fi
rm -rf ../linux-for-linux-meta
git clone -b ${NEWEST_TUXEDO_TAG} --depth 1 -c advice.detachedHead=false $LINUX_REPO_URL ../linux-for-linux-meta

echo "===Run update script.==="
./update-version ../linux-for-linux-meta auto-commit

echo "===Done.==="
