# ================================
# Настройки
# ================================
COMPOSE=docker compose
SERVICE=primoguard

# Список команд
.PHONY: help install dev build preview up down restart logs pull update ps shell clean prune tunnel

# ================================
# Помощь
# ================================
help:
  @echo "Доступные команды:"
  @echo "  make install   - установить npm зависимости"
  @echo "  make dev       - локальный запуск Astro для разработки"
  @echo "  make build     - продакшн сборка Astro"
  @echo "  make preview   - предпросмотр продакшн сборки"
  @echo "  make up        - поднять Docker контейнер"
  @echo "  make down      - остановить Docker контейнер"
  @echo "  make restart   - перезапустить Docker контейнер"
  @echo "  make logs      - смотреть логи Docker"
  @echo "  make pull      - обновить проект через git pull"
  @echo "  make update    - обновить проект и перезапустить Docker"
  @echo "  make ps        - список контейнеров"
  @echo "  make shell     - зайти внутрь контейнера"
  @echo "  make clean     - остановить контейнер"
  @echo "  make prune     - очистить Docker мусор"
  @echo "  make tunnel    - запустить Cloudflare Tunnel"

# ================================
# Локальная разработка
# ================================
install:
  npm install

dev:
  npm run dev

build:
  npm run build

preview:
  npm run preview

# ================================
# Docker
# ================================
up:
  $(COMPOSE) up -d --build

down:
  $(COMPOSE) down

restart:
  $(COMPOSE) down
  $(COMPOSE) up -d --build

logs:
  $(COMPOSE) logs -f

ps:
  $(COMPOSE) ps

shell:
  docker exec -it $(SERVICE) sh

# ================================
# Git + Docker
# ================================
pull:
  git pull

update:
  $(COMPOSE) down
  git pull
  $(COMPOSE) up -d --build
  $(COMPOSE) logs -f

# ================================
# Очистка
# ================================
clean:
  $(COMPOSE) down

prune:
  docker system prune -f

# ================================
# Публичный доступ
# ================================
tunnel:
  cloudflared tunnel --url http://127.0.0.1:4321 --protocol http2 --edge-ip-version 4