#!/usr/bin/env bash
set -euo pipefail

if [ $# -lt 2 ]; then
  echo "Usage: blade-done.sh <path: resources/views/...> <hash> [-f]"
  exit 1
fi

SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
ROOT="${PROJECT_ROOT:-$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || pwd)}"

ART="$ROOT/.mbs_artifacts"
DONE="$ART/done.txt"
VIEWS_DIR="$ROOT/resources/views"
HASH="$SCRIPT_DIR/_hash.sh"

PATH_ARG="$1"
HASH_ARG="$2"
FORCE="${3:-}"

REL="${PATH_ARG#resources/views/}"
FP="$VIEWS_DIR/$REL"

[ -f "$DONE" ] || touch "$DONE"

if [ "$FORCE" != "-f" ]; then
  if [ ! -f "$FP" ]; then
    echo "Warning: file not found now ($FP). Use -f to force."; exit 1
  fi
  CUR_HASH="$("$HASH" hash_file "$FP")"
  if [ "$CUR_HASH" != "$HASH_ARG" ]; then
    echo "Hash mismatch:"
    echo "  expected: $HASH_ARG"
    echo "  current : $CUR_HASH"
    echo "If the file changed since analysis, re-run analysis or force with -f."
    exit 1
  fi
fi

echo "$HASH_ARG $REL" >> "$DONE"
echo "Marked done: $REL @ $HASH_ARG"
