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

MOSAIC_HOME="${MOSAIC_HOME:-$HOME/.config/mosaic}"
TARGET_DIR="$(pwd)"
TEMPLATE=""

usage() {
  cat <<USAGE
Usage: $(basename "$0") --template <name> [--target <dir>]

Apply Mosaic quality tools templates into a project.

Templates:
  typescript-node
  typescript-nextjs
  monorepo

Examples:
  $(basename "$0") --template typescript-node --target ~/src/my-project
  $(basename "$0") --template monorepo
USAGE
}

while [[ $# -gt 0 ]]; do
  case "$1" in
    --template)
      TEMPLATE="${2:-}"
      shift 2
      ;;
    --target)
      TARGET_DIR="${2:-}"
      shift 2
      ;;
    -h|--help)
      usage
      exit 0
      ;;
    *)
      echo "Unknown argument: $1" >&2
      usage >&2
      exit 1
      ;;
  esac
done

if [[ -z "$TEMPLATE" ]]; then
  echo "[mosaic-quality] Missing required --template" >&2
  usage >&2
  exit 1
fi

if [[ ! -d "$TARGET_DIR" ]]; then
  echo "[mosaic-quality] Target directory does not exist: $TARGET_DIR" >&2
  exit 1
fi

SCRIPT="$MOSAIC_HOME/tools/quality/scripts/install.sh"
if [[ ! -x "$SCRIPT" ]]; then
  echo "[mosaic-quality] Missing install script: $SCRIPT" >&2
  exit 1
fi

echo "[mosaic-quality] Applying template '$TEMPLATE' to $TARGET_DIR"
"$SCRIPT" --template "$TEMPLATE" --target "$TARGET_DIR"
