#!/usr/bin/env bash
# =============================================================================
# setup.sh — First-time environment setup for IOTA Web Guardian
# =============================================================================

set -euo pipefail

REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "${REPO_ROOT}"

echo "==> IOTA Web Guardian — Setup"
echo ""

# --- .env file ---------------------------------------------------------------
if [ ! -f ".env" ]; then
  cp .env.example .env
  echo "    Created .env from .env.example"
  echo "    IMPORTANT: Fill in IOTA_IDENTITY_PKG_ID and other required values."
else
  echo "    .env already exists — skipping."
fi

# --- dev-keys.json -----------------------------------------------------------
if [ ! -f "dev-keys.json" ]; then
  echo '{}' > dev-keys.json
  echo "    Created empty dev-keys.json (will be populated by services on first run)."
else
  echo "    dev-keys.json already exists — skipping."
fi

if [ ! -f "dev-key-ids.json" ]; then
  echo '{}' > dev-key-ids.json
  echo "    Created empty dev-key-ids.json."
else
  echo "    dev-key-ids.json already exists — skipping."
fi

# --- pnpm install ------------------------------------------------------------
if command -v pnpm &>/dev/null; then
  echo ""
  echo "==> Installing frontend dependencies via pnpm ..."
  pnpm install
else
  echo ""
  echo "WARNING: pnpm not found. Install it with: npm install -g pnpm"
  echo "         Then run: pnpm install"
fi

echo ""
echo "============================================================"
echo "  Setup complete!"
echo ""

# Detect active network from .env
ACTIVE_NETWORK="testnet"
if [ -f ".env" ]; then
  if grep -q "^IOTA_NODE_URL=http://127.0.0.1" ".env" 2>/dev/null; then
    ACTIVE_NETWORK="localnet"
  fi
fi

if [ "${ACTIVE_NETWORK}" = "localnet" ]; then
  echo "  Network: localnet (http://127.0.0.1:9000)"
  echo ""
  echo "  Next steps:"
  echo "  1. Start the IOTA local node (keep this terminal open):"
  echo "     RUST_LOG='off,iota_node=info' iota start --force-regenesis --with-faucet"
  echo ""
  echo "  2. Configure network (fund CLI wallet + patch .env secrets):"
  echo "     ./scripts/configure-network.sh --network localnet"
  echo ""
  echo "  3. Deploy the Identity Move package (auto-patches .env):"
  echo "     ./scripts/deploy-identity-pkg.sh"
  echo ""
  echo "  4. Start all services:"
  echo "     docker compose up --build -d"
  echo ""
  echo "  5. Fund all service wallets:"
  echo "     ./scripts/fund-services.sh --network localnet"
  echo ""
  echo "  6. Complete onboarding via UI (see README §8), then:"
  echo "     ./scripts/publish-super-certifier.sh       # patches .env + restarts CVS"
else
  echo "  Network: testnet (https://api.testnet.iota.cafe)"
  echo ""
  echo "  Next steps:"
  echo "  1. Configure network (fund CLI wallet + patch .env secrets):"
  echo "     ./scripts/configure-network.sh --network testnet"
  echo ""
  echo "  2. Deploy the Identity Move package (auto-patches .env):"
  echo "     ./scripts/deploy-identity-pkg.sh --network testnet"
  echo ""
  echo "  3. Start all services (first build takes 5-15 min):"
  echo "     docker compose up --build -d"
  echo ""
  echo "  4. Fund all service wallets:"
  echo "     ./scripts/fund-services.sh --network testnet"
  echo ""
  echo "  5. Complete onboarding via UI (see README §8), then:"
  echo "     ./scripts/publish-super-certifier.sh       # patches .env + restarts CVS"
fi

echo ""
echo "  See README.md for the full step-by-step guide."
echo "============================================================"
