#!/bin/sh

GITHUB_SHA=
GITHUB_REPOSITORY=
GITHUB_REPOSITORY_OWNER=
GITHUB_TAG=

while [ -n "$1" ]; do
    case $1 in
    --GITHUB_SHA=*)
        GITHUB_SHA=${1#--GITHUB_SHA=}
        ;;
    --GITHUB_REPOSITORY=*)
        GITHUB_REPOSITORY=${1#--GITHUB_REPOSITORY=}
        ;;
    --GITHUB_REPOSITORY_OWNER=*)
        GITHUB_REPOSITORY_OWNER=${1#--GITHUB_REPOSITORY_OWNER=}
        ;;
    --GITHUB_TAG=*)
        GITHUB_TAG=${1#--GITHUB_TAG=}
        ;;
    *)
        echo "Command $1 unknown. exiting..."
        exit 1
        ;;
    esac
    shift
done

if [ -z "$GITHUB_SHA" ] || [ -z "$GITHUB_REPOSITORY" ] ||
    [ -z "$GITHUB_REPOSITORY_OWNER" ] || [ -z "$GITHUB_TAG" ]; then
    exit 1
fi

# Include-file of libefivar port uses GCC-specific builtin function
export CC=gcc

set -xe
mkdir -p /usr/local/etc/pkg/repos/
# Fix meson flag problem https://www.mail-archive.com/freebsd-ports@freebsd.org/msg86617.html
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
# Use latest pkg repo instead of quarterly https://wiki.freebsd.org/Ports/QuarterlyBranch
sed -i .old 's|url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly"|url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest"|' \
    /usr/local/etc/pkg/repos/FreeBSD.conf
pkg install -y meson efivar
pkg upgrade -y meson
cd /usr
git clone https://github.com/3mdeb/freebsd-ports.git --depth 1 -b fwupd ports
cd /usr/ports/sysutils/fwupd
rm -rf ./*
ls .
cp -r ~/work/fwupd/fwupd/contrib/freebsd/* .
ls .
sed -i .old "s/GH_TAGNAME=.*$/GH_TAGNAME=\t${GITHUB_SHA}/" Makefile
sed -i .old "s/GH_ACCOUNT=.*$/GH_ACCOUNT=\t${GITHUB_REPOSITORY_OWNER}/" Makefile
sed -i .old "s/DISTVERSION=.*$/DISTVERSION=\t${GITHUB_TAG}/" Makefile
make makesum
make clean
make
# Generate current list of files in the pkg-plist
make makeplist >pkg-plist
sed -i "" "1d" pkg-plist
sed -i "" "s/%%PORTDOCS%%%%DOCSDIR%%/%%DOCSDIR%%/g" pkg-plist
# Build artifact
make clean
make package
make install
cp /usr/ports/sysutils/fwupd/work/pkg/fwupd*.pkg \
    ~/work/fwupd/fwupd/fwupd-freebsd-${GITHUB_TAG}-${GITHUB_SHA}.pkg || exit 1
