#!/bin/sh
#
# For all products pull latest finaltest images and install it
# in current directory
# Requires directory repo with file .env (H_PASS, H_USER).
#

set -e

products='patron g1 neuron edge'
LIBDIR=/usr/lib/unipi/dl-tools

cd repo
for P in $products; do
    REPO=harbor.unipi.technology/optimus/dut-final-"$P":latest
    MANIFEST=dut-final-"$P".manifest
    "$LIBDIR"/harbor.sh "$REPO" "$MANIFEST"
    IMAGE=$("$LIBDIR"/manifest.py "application/vnd.unipi.iscsi" < "$MANIFEST")
    if [ -r "$IMAGE" ] && [ "$MANIFEST" -nt "$IMAGE" ]; then
        $LIBDIR/enlarge_image "$IMAGE" '+100M'
    fi
done
cd ..

enable_tgt()
{
    systemctl start tgt
}

trap enable_tgt EXIT INT QUIT
VER=${1:-latest}

## Install images to iscsi server
systemctl stop tgt
for P in $products; do
    MANIFEST=repo/dut-final-"$P".manifest
    IMAGE=repo/$("$LIBDIR"/manifest.py "application/vnd.unipi.iscsi" < "$MANIFEST")
    if [ -r "$IMAGE" ] && [ "$IMAGE" -nt "$MANIFEST" ]; then
        mv "$IMAGE" .
        ln -sf "$(basename "$IMAGE")" "$P".img
    fi
done

G1_IMINI=repo/$("$LIBDIR"/manifest.py "application/vnd.unipi.bootdisc" < repo/dut-final-g1.manifest)
G1_ZIP=repo/$("$LIBDIR"/manifest.py "application/zip" < repo/dut-final-g1.manifest)
NEURON_ZIP=repo/$("$LIBDIR"/manifest.py "application/zip" < repo/dut-final-neuron.manifest)
if [ -w "$G1_IMINI" ] && [ -r "$G1_ZIP" ] && [ -r "$NEURON_ZIP" ]; then
    "$LIBDIR"/combine_g1_n "$G1_IMINI" "$G1_ZIP" "$NEURON_ZIP"
    mv "$G1_IMINI" .
fi

PATRON_IMINI=repo/$("$LIBDIR"/manifest.py "application/vnd.unipi.bootdisc" < repo/dut-final-patron.manifest)
if [ -r "$PATRON_IMINI" ]; then
    mv "$PATRON_IMINI" .
fi

EDGE_IMINI=repo/$("$LIBDIR"/manifest.py "application/vnd.unipi.bootdisc" < repo/dut-final-edge.manifest)
if [ -r "$EDGE_IMINI" ]; then
    mv "$EDGE_IMINI" .
    ln -sf "$(basename "$EDGE_IMINI")" trixie-edge.mini
fi
