#!/bin/bash

# Abort if anything fails
set -e

# Ensure we have the submodule checked out
git submodule update --init --recursive --jobs=8

# Prepare build repo
BUILD_ROOT=$(realpath "${BASH_SOURCE[0]%/*}/..")
BUILD_RELEASE_PATH="$BUILD_ROOT/release"
mkdir -p "$BUILD_RELEASE_PATH"

# Determine which build script to use
if [[ $1 == "--offline" ]]; then
  BUILD_SCRIPT="builder/offline.sh"
else
  BUILD_SCRIPT="builder/online.sh"
fi

OMARCHY_CONFIGURATOR_REPO="${OMARCHY_CONFIGURATOR_REPO:-omacom-io/omarchy-configurator}"
OMARCHY_CONFIGURATOR_REF="${OMARCHY_CONFIGURATOR_REF:-master}"

OMARCHY_INSTALLER_REPO="${OMARCHY_INSTALLER_REPO:-basecamp/omarchy}"
OMARCHY_INSTALLER_REF="${OMARCHY_INSTALLER_REF:-master}"

OMARCHY_BARE="${OMARCHY_BARE:-}"

# Run the builder
docker run --rm \
  --privileged \
  -e "OMARCHY_CONFIGURATOR_REPO=$OMARCHY_CONFIGURATOR_REPO" \
  -e "OMARCHY_CONFIGURATOR_REF=$OMARCHY_CONFIGURATOR_REF" \
  -e "OMARCHY_INSTALLER_REPO=$OMARCHY_INSTALLER_REPO" \
  -e "OMARCHY_INSTALLER_REF=$OMARCHY_INSTALLER_REF" \
  -e "OMARCHY_BARE=$OMARCHY_BARE" \
  -v "$BUILD_RELEASE_PATH/:/out/" \
  -v "$BUILD_ROOT/$BUILD_SCRIPT:/$BUILD_SCRIPT:ro" \
  -v "$BUILD_ROOT/archiso:/archiso:ro" \
  -v "$BUILD_ROOT/builder:/builder:ro" \
  archlinux/archlinux:latest /$BUILD_SCRIPT

# Make iso accessible to all
sudo chmod 777 -R "$BUILD_RELEASE_PATH"

# Offer to boot the new build
echo
latest_iso=$(\ls -t "$BUILD_RELEASE_PATH"/*.iso | head -n1)
gum confirm "Boot $latest_iso?" && omarchy-iso-boot "$latest_iso"
