#!/usr/bin/env bash

set -euo pipefail

CODE_NAME=""
DATE=""

usage() {
    echo "Usage: $0 --code-name <code-name> --date <YYYY-MM-DD>"
    exit 1
}

while [[ $# -gt 0 ]]; do
    case "$1" in
        --code-name)
            CODE_NAME="$2"
            shift 2
            ;;
        --date)
            DATE="$2"
            shift 2
            ;;
        *)
            usage
            ;;
    esac
done

[[ -n "$CODE_NAME" && -n "$DATE" ]] || usage

if [[ ! "$DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
    echo "Error: date must be in YYYY-MM-DD format"
    exit 1
fi

rm -rf ./current/* && cp -vR ../harian/current/* current/

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CURRENT_DIR="${SCRIPT_DIR}/current"

YEAR="${DATE:2:2}"
MONTH="${DATE:5:2}"
VERSION="${YEAR}.${MONTH}"

BASE_NAME="blankon-sinambung-${VERSION}-${CODE_NAME}-amd64"

declare -A FILES=(
    ["blankon-live-image-amd64.contents"]="${BASE_NAME}.contents"
    ["blankon-live-image-amd64.files"]="${BASE_NAME}.files"
    ["blankon-live-image-amd64.hybrid.iso"]="${BASE_NAME}.iso"
    ["blankon-live-image-amd64.hybrid.iso.sha256sum"]="${BASE_NAME}.iso.sha256sum"
    ["blankon-live-image-amd64.packages"]="${BASE_NAME}.packages"
)

if [[ ! -d "$CURRENT_DIR" ]]; then
    echo "Error: current directory not found: $CURRENT_DIR"
    exit 1
fi

echo "Release: ${VERSION}"
echo "Code name: ${CODE_NAME}"
echo "Date: ${DATE}"
echo

for OLD in "${!FILES[@]}"; do
    NEW="${FILES[$OLD]}"

    if [[ -e "${CURRENT_DIR}/${OLD}" ]]; then
        echo "Renaming:"
        echo "  ${OLD}"
        echo "  -> ${NEW}"

        mv -- "${CURRENT_DIR}/${OLD}" "${CURRENT_DIR}/${NEW}"
    else
        echo "Warning: file not found: ${OLD}"
    fi
done

ZSYNC_FILE="${CURRENT_DIR}/blankon-live-image-amd64.hybrid.iso.zsync"

if [[ -e "$ZSYNC_FILE" ]]; then
    echo
    echo "Removing: blankon-live-image-amd64.hybrid.iso.zsync"
    rm -- "$ZSYNC_FILE"
fi

echo
echo "Done."
