# Host Status Monitor Deployment Makefile
# Usage: make deploy-<hostname>

.PHONY: build deploy-all deploy-platform deploy-apricot deploy-black deploy-vpn deploy-macbook status logs help

# SSH key for 1984 hosts
SSH_KEY := ~/.ssh/id_ed25519_1984
SSH_OPTS := -o StrictHostKeyChecking=accept-new

# Host definitions
PLATFORM_VPS := root@93.95.228.142
VPN_GATEWAY := root@93.95.231.174
APRICOT := localhost
BLACK := lilith@black
MACBOOK := natalie@10.0.0.162

# Default target
help:
	@echo "Host Status Monitor Deployment"
	@echo ""
	@echo "Usage:"
	@echo "  make build           - Build TypeScript to JavaScript"
	@echo "  make deploy-all      - Deploy to all hosts"
	@echo "  make deploy-platform - Deploy to platform-vps"
	@echo "  make deploy-vpn      - Deploy to vpn-gateway"
	@echo "  make deploy-apricot  - Deploy to apricot (localhost)"
	@echo "  make deploy-black    - Deploy to black"
	@echo "  make deploy-macbook  - Deploy to macbook"
	@echo "  make status          - Check status on all hosts"
	@echo "  make logs            - Tail logs from platform-vps"
	@echo ""

# Build
build:
	@echo "Building host-status-monitor..."
	npm run build

# Deploy to all hosts
deploy-all: build deploy-platform deploy-vpn deploy-apricot deploy-black deploy-macbook
	@echo "All deployments complete"

# Deploy to platform-vps
deploy-platform: build
	@echo "Deploying to platform-vps..."
	./deploy.sh platform-vps

# Deploy to vpn-gateway
deploy-vpn: build
	@echo "Deploying to vpn-gateway..."
	./deploy.sh vpn-gateway

# Deploy to apricot (localhost)
deploy-apricot: build
	@echo "Deploying to apricot (localhost)..."
	./deploy.sh apricot

# Deploy to black
deploy-black: build
	@echo "Deploying to black..."
	./deploy.sh black

# Deploy to macbook
deploy-macbook: build
	@echo "Deploying to macbook..."
	./deploy.sh macbook

# Check status on all hosts
status:
	@echo "=== Platform VPS ==="
	@ssh -i $(SSH_KEY) $(SSH_OPTS) $(PLATFORM_VPS) "systemctl status host-status-monitor --no-pager" 2>/dev/null || echo "Could not connect"
	@echo ""
	@echo "=== VPN Gateway ==="
	@ssh -i $(SSH_KEY) $(SSH_OPTS) $(VPN_GATEWAY) "systemctl status host-status-monitor --no-pager" 2>/dev/null || echo "Could not connect"
	@echo ""
	@echo "=== Apricot (localhost) ==="
	@systemctl status host-status-monitor --no-pager 2>/dev/null || echo "Not installed locally"
	@echo ""
	@echo "=== Black ==="
	@ssh $(BLACK) "systemctl status host-status-monitor --no-pager" 2>/dev/null || echo "Could not connect"
	@echo ""
	@echo "=== MacBook ==="
	@ssh $(MACBOOK) "launchctl list | grep host-status-monitor" 2>/dev/null || echo "Could not connect"

# Tail logs from platform-vps
logs:
	ssh -i $(SSH_KEY) $(SSH_OPTS) $(PLATFORM_VPS) "journalctl -u host-status-monitor -f"

logs-vpn:
	ssh -i $(SSH_KEY) $(SSH_OPTS) $(VPN_GATEWAY) "journalctl -u host-status-monitor -f"

logs-apricot:
	journalctl -u host-status-monitor -f

logs-black:
	ssh $(BLACK) "journalctl -u host-status-monitor -f"

logs-macbook:
	ssh $(MACBOOK) "tail -f /var/log/host-status-monitor.log"
