From b1a4a846d6784c7b5d2d87a8eb68857f5d97455f Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 14 Jun 2026 11:35:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D1=83=D0=BB=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .golangci.yml | 32 +++++++++++++++++++-------- CLAUDE.md | 13 ++++++----- Makefile | 28 ----------------------- README.md | 14 +++++++----- Taskfile.yml | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 47 deletions(-) delete mode 100644 Makefile create mode 100644 Taskfile.yml diff --git a/.golangci.yml b/.golangci.yml index fb24e1a..d532ca4 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,13 +1,27 @@ -# Минимальный конфиг golangci-lint (формат v1). -# При golangci-lint v2 может потребоваться адаптация схемы. -run: - timeout: 5m +# Конфиг golangci-lint (схема v2; устанавливается через `task setup`). +# Базовый набор v2 (`default: standard`) — errcheck, govet, ineffassign, +# staticcheck, unused; дополнительно включаем misspell. +version: "2" linters: enable: - - errcheck - - govet - - ineffassign - - staticcheck - - unused - misspell + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + paths: + - third_party$ + - builtin$ + - examples$ + +formatters: + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/CLAUDE.md b/CLAUDE.md index 6c48a3c..79255e1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -54,11 +54,14 @@ ## Команды -- `make run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`) -- `make build` — статический бинарь `linux/amd64` для сервера -- `make test` / `make lint` — тесты и golangci-lint -- `make tidy` — `go mod tidy` -- `make image` — docker-образ из готового бинаря +Запуск через [Task](https://taskfile.dev) (`task --list` — полный список): + +- `task setup` — установка тулинга (golangci-lint + git-хуки lefthook) +- `task run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`) +- `task build` — статический бинарь `linux/amd64` для сервера +- `task test` / `task lint` — тесты и golangci-lint +- `task tidy` — `go mod tidy` +- `task image` — docker-образ из готового бинаря Module path — `git.vakhrushev.me/av/jellybit`. Go 1.26, `CGO_ENABLED=0`. Стек: `chi`, `sqlx` + `modernc.org/sqlite`, `goose` (миграции), diff --git a/Makefile b/Makefile deleted file mode 100644 index b57b074..0000000 --- a/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -BINARY := jellybit -PKG := ./cmd/jellybit - -.PHONY: build run test lint tidy image clean - -# Статический бинарь для сервера (Intel N150 = linux/amd64). -build: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o $(BINARY) $(PKG) - -# Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db). -run: - go run $(PKG) --config ./config.toml - -test: - go test ./... - -lint: - golangci-lint run - -tidy: - go mod tidy - -# Образ из уже собранного бинаря (см. docs/adr docker-deploy). -image: build - docker build -t jellybit:dev . - -clean: - rm -f $(BINARY) diff --git a/README.md b/README.md index 756897c..3af776c 100644 --- a/README.md +++ b/README.md @@ -52,13 +52,17 @@ TOML, логи — структурированный JSON (`slog`). Подро ## Разработка +Нужны Go 1.26 и [Task](https://taskfile.dev). Полный список задач — +`task --list`. + ```bash cp config.example.toml config.toml # локально: db_path -> ./jellybit.db -make tidy # go mod tidy -make run # go run ./cmd/jellybit --config ./config.toml -make test lint # тесты и golangci-lint -make build # статический бинарь (linux/amd64) для сервера -make image # docker-образ из готового бинаря +task setup # golangci-lint + git-хуки lefthook +task tidy # go mod tidy +task run # go run ./cmd/jellybit --config ./config.toml +task test lint # тесты и golangci-lint +task build # статический бинарь (linux/amd64) для сервера +task image # docker-образ из готового бинаря ``` ## Доставка diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..4b78ca2 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,61 @@ +# 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 + +tasks: + default: + desc: Список доступных задач + cmds: + - task --list + silent: true + + run: + desc: 'Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db)' + cmds: + - go run {{.PKG}} --config ./config.toml + + build: + desc: Статический бинарь linux/amd64 для сервера (Intel N150) + 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 + + tidy: + desc: go mod tidy + cmds: + - go mod tidy + + image: + desc: Docker-образ из готового бинаря (см. docs/adr docker-deploy) + deps: [build] + cmds: + - docker build -t jellybit:dev . + + clean: + desc: Удалить собранный бинарь + cmds: + - rm -f {{.BINARY}} + + setup: + desc: Установка инструментов разработки (линтер + git-хуки lefthook) + cmds: + - go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@{{.GOLANGCI_VERSION}} + - lefthook install