#!/usr/bin/env bash
source "$(dirname -- "${BASH_SOURCE[0]}")/lib.sh"
[[ $# == 0 ]] || die 'Usage: tools/prepare-void'
check_void_pin
# xbps-src reads this ignored local configuration instead of user-global settings.
if [[ -f $FDS_VOID/etc/conf ]] && ! cmp -s "$FDS_ROOT/config/xbps-src.conf" "$FDS_VOID/etc/conf"; then
    die 'vendor/void-packages/etc/conf differs from config/xbps-src.conf; reconcile it explicitly'
fi
cp -- "$FDS_ROOT/config/xbps-src.conf" "$FDS_VOID/etc/conf"
# Only directories containing a template are active overlays.
# Copies keep the source available inside xbps-src's /void-packages bind mount.
for template in "$FDS_ROOT"/packages/*/template; do
    [[ -f $template ]] || continue
    package_dir=${template%/template}
    package=${package_dir##*/}
    [[ $package == fds-* ]] || die "Overlay name must start with fds-: $package"
    tracked=$(git -C "$FDS_VOID" ls-tree HEAD "srcpkgs/$package")
    [[ -z $tracked ]] || die "Overlay would replace an upstream package: $package"
    dest="$FDS_VOID/srcpkgs/$package"
    if [[ -e $dest ]]; then
        diff -qr "$package_dir" "$dest" >/dev/null || die "Stale overlay $dest; remove that generated copy and retry"
    else
        cp -a -- "$package_dir" "$dest"
    fi
done
