# yaml-language-server: $schema=https://taskfile.dev/schema.json # # Запуск команд проекта через Task (https://taskfile.dev). # Список задач: `task --list`. version: '3' vars: BINARY: healthlog PKG: ./cmd/healthlog # Версии инструментов для воспроизводимой установки (см. задачу setup). GOLANGCI_VERSION: v2.12.2 tasks: default: desc: Список доступных задач cmds: - task --list silent: true run: desc: 'Локальный запуск (config.toml не обязателен — есть умолчания)' cmds: - go run {{.PKG}} --config ./config.toml | hl build: desc: Статический бинарь linux/amd64 для сервера cmds: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o {{.BINARY}} {{.PKG}} test: desc: Прогон тестов cmds: - go test ./... lint: desc: Запуск golangci-lint cmds: - golangci-lint run up: desc: 'Собрать и поднять сервис в контейнере (данные в ./data переживают пересборку)' deps: [build] cmds: - docker compose up -d --build - task: wait down: desc: Остановить контейнер cmds: - docker compose down restart: desc: 'Пересобрать бинарь и перезапустить сервис — основной цикл разработки' deps: [build] cmds: - docker compose up -d --build - task: wait wait: desc: 'Дождаться, пока сервис ответит на /healthz' internal: true cmds: - | for i in $(seq 1 30); do if curl -fsS --max-time 2 http://127.0.0.1:8080/healthz >/dev/null 2>&1; then echo "healthlog отвечает на :8080"; exit 0 fi sleep 1 done echo "healthlog не поднялся за 30 секунд, смотри: task logs" >&2 exit 1 logs: desc: 'Логи сервиса (LINES=N — сколько строк, по умолчанию 50)' vars: LINES: '{{.LINES | default "50"}}' cmds: - docker compose logs --tail {{.LINES}} healthlog ps: desc: Состояние контейнера cmds: - docker compose ps gate: desc: 'Детерминированный гейт ревью: build/vet/lint/test/race/покрытие диффа/миграции/секреты. BASE= — база диффа' cmds: - python3 scripts/gate.py {{.BASE}} review:context: desc: 'Вход для архитектурного прохода ревью: пакеты, граф зависимостей, инвентарь концепций' cmds: - python3 scripts/review-context.py tidy: desc: go mod tidy cmds: - go mod tidy clean: desc: Удалить собранный бинарь cmds: - rm -f {{.BINARY}} setup: desc: Установка инструментов разработки cmds: - go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@{{.GOLANGCI_VERSION}}