# yaml-language-server: $schema=https://taskfile.dev/schema.json # # Запуск команд проекта через Task (https://taskfile.dev). # Список задач: `task --list`. version: '3' vars: BINARY: jellybit PKG: ./cmd/jellybit # Версии инструментов для воспроизводимой установки (см. задачу setup). GOLANGCI_VERSION: v2.12.2 GOVULNCHECK_VERSION: v1.6.0 tasks: default: desc: Список доступных задач cmds: - task --list silent: true run: desc: 'Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db)' deps: [assets] cmds: - go run {{.PKG}} --config ./config.toml build: desc: Статический бинарь linux/amd64 для сервера (Intel N150) deps: [assets] 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 gate: desc: 'Детерминированный гейт ревью: build/vet/lint/test/race/покрытие диффа/миграции/канон docs/секреты. 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 assets: desc: 'Идемпотентный фетч вендорных ассетов в web/static/vendor (по web/assets.manifest, проверка sha256; Node не нужен)' cmds: - | set -e while IFS= read -r line; do case "$line" in ''|\#*) continue;; esac set -- $line dest=$1; url=$2; sum=$3 file="web/static/$dest" if [ -f "$file" ] && echo "$sum $file" | sha256sum -c --status - 2>/dev/null; then continue fi mkdir -p "$(dirname "$file")" echo "↓ $dest" curl -fsSL --retry 3 -o "$file" "$url" echo "$sum $file" | sha256sum -c - done < web/assets.manifest image: desc: 'Docker-образ из готового бинаря. Тег из $BUILD_ID (по умолчанию dev; роль app_image umbar передаёт свой). См. docs/adr local-image-build' deps: [build] cmds: - docker build -t {{.BINARY}}:${BUILD_ID:-dev} . clean: desc: Удалить собранный бинарь cmds: - rm -f {{.BINARY}} setup: desc: Установка инструментов разработки (линтер, govulncheck + git-хуки lefthook) cmds: - go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@{{.GOLANGCI_VERSION}} - go install golang.org/x/vuln/cmd/govulncheck@{{.GOVULNCHECK_VERSION}} - lefthook install