#!/bin/bash
#
# Complete Bitcoin Knots Deployment for Archipelago
# This script deploys Bitcoin Knots with a working web UI
# 
# For production/beta releases, this needs to be captured in the auto-installer
# or provided as a one-click install in the App Store
#

set -e

echo "╔════════════════════════════════════════════════════════════════╗"
echo "║  Deploying Bitcoin Knots with Web UI                          ║"
echo "╚════════════════════════════════════════════════════════════════╝"
echo ""

# Step 1: Create data directory
echo "📁 Creating Bitcoin data directory..."
sudo mkdir -p /var/lib/archipelago/bitcoin
echo "   ✅ Directory created"

# Step 2: Deploy Bitcoin Knots node
echo ""
echo "₿ Deploying Bitcoin Knots node..."
sudo podman run -d \
  --name bitcoin-knots \
  --restart unless-stopped \
  -p 8332:8332 \
  -p 8333:8333 \
  -v /var/lib/archipelago/bitcoin:/home/bitcoin/.bitcoin \
  --label "com.archipelago.app=bitcoin-knots" \
  --label "com.archipelago.title=Bitcoin Knots" \
  --label "com.archipelago.version=28.1" \
  --label "com.archipelago.category=bitcoin" \
  --label "com.archipelago.description.short=Full Bitcoin node implementation" \
  --label "com.archipelago.description.long=Bitcoin Knots is a derivative of Bitcoin Core with additional features and bug fixes. Maintain the full blockchain and validate all transactions." \
  --label "com.archipelago.license=MIT" \
  --label "com.archipelago.icon=/assets/img/app-icons/bitcoin-knots.webp" \
  --label "com.archipelago.port=8332" \
  --label "com.archipelago.repo=https://github.com/bitcoinknots/bitcoin" \
  docker.io/bitcoinknots/bitcoin:latest \
  -server=1 \
  -txindex=1 \
  -rpcallowip=0.0.0.0/0 \
  -rpcbind=0.0.0.0:8332 \
  -rpcuser=archipelago \
  -rpcpassword=archipelago123 \
  -dbcache=4096

echo "   ✅ Bitcoin Knots node starting"

# Step 3: Build and deploy web UI
echo ""
echo "🌐 Building Bitcoin Knots web UI..."

# Create temporary build directory
BUILD_DIR="/tmp/bitcoin-ui-build"
rm -rf "$BUILD_DIR"
mkdir -p "$BUILD_DIR"

# Create Dockerfile
cat > "$BUILD_DIR/Dockerfile" << 'EOF'
FROM docker.io/library/nginx:alpine

# Copy the static UI
COPY index.html /usr/share/nginx/html/

# Create assets directories
RUN mkdir -p /usr/share/nginx/html/assets/img/app-icons && \
    mkdir -p /usr/share/nginx/html/assets/img

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
EOF

# Copy UI file from the project
# For beta: this needs to be included in the ISO or downloadable
cp /home/archipelago/archy/docker/bitcoin-ui/index.html "$BUILD_DIR/"

# Build the image
sudo podman build -t localhost/bitcoin-ui:latest "$BUILD_DIR"

# Deploy UI container
sudo podman run -d \
  --name bitcoin-ui \
  --restart unless-stopped \
  -p 8334:80 \
  --label "com.archipelago.app=bitcoin-ui" \
  --label "com.archipelago.parent=bitcoin-knots" \
  localhost/bitcoin-ui:latest

echo "   ✅ Bitcoin UI deployed on port 8334"

# Cleanup
rm -rf "$BUILD_DIR"

# Step 4: Wait for backend to detect
echo ""
echo "⏳ Waiting for backend to detect containers..."
sleep 5

echo ""
echo "╔════════════════════════════════════════════════════════════════╗"
echo "║  ✅ BITCOIN KNOTS DEPLOYED!                                   ║"
echo "╚════════════════════════════════════════════════════════════════╝"
echo ""
echo "📊 Status:"
sudo podman ps | grep bitcoin
echo ""
echo "🌐 Access:"
echo "   • Web UI:  http://YOUR-SERVER-IP:8334"
echo "   • RPC:     http://localhost:8332"
echo "   • Network: Port 8333 (Bitcoin P2P)"
echo ""
echo "📝 RPC Credentials:"
echo "   • User: archipelago"
echo "   • Pass: archipelago123"
echo ""
echo "⏰ Blockchain sync will take several hours to days."
echo "   Check progress: sudo podman logs -f bitcoin-knots"
echo ""
