Настроил тулинг
This commit is contained in:
+23
-9
@@ -1,13 +1,27 @@
|
|||||||
# Минимальный конфиг golangci-lint (формат v1).
|
# Конфиг golangci-lint (схема v2; устанавливается через `task setup`).
|
||||||
# При golangci-lint v2 может потребоваться адаптация схемы.
|
# Базовый набор v2 (`default: standard`) — errcheck, govet, ineffassign,
|
||||||
run:
|
# staticcheck, unused; дополнительно включаем misspell.
|
||||||
timeout: 5m
|
version: "2"
|
||||||
|
|
||||||
linters:
|
linters:
|
||||||
enable:
|
enable:
|
||||||
- errcheck
|
|
||||||
- govet
|
|
||||||
- ineffassign
|
|
||||||
- staticcheck
|
|
||||||
- unused
|
|
||||||
- misspell
|
- 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$
|
||||||
|
|||||||
@@ -54,11 +54,14 @@
|
|||||||
|
|
||||||
## Команды
|
## Команды
|
||||||
|
|
||||||
- `make run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`)
|
Запуск через [Task](https://taskfile.dev) (`task --list` — полный список):
|
||||||
- `make build` — статический бинарь `linux/amd64` для сервера
|
|
||||||
- `make test` / `make lint` — тесты и golangci-lint
|
- `task setup` — установка тулинга (golangci-lint + git-хуки lefthook)
|
||||||
- `make tidy` — `go mod tidy`
|
- `task run` — локальный запуск (`go run ./cmd/jellybit --config ./config.toml`)
|
||||||
- `make image` — docker-образ из готового бинаря
|
- `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`.
|
Module path — `git.vakhrushev.me/av/jellybit`. Go 1.26, `CGO_ENABLED=0`.
|
||||||
Стек: `chi`, `sqlx` + `modernc.org/sqlite`, `goose` (миграции),
|
Стек: `chi`, `sqlx` + `modernc.org/sqlite`, `goose` (миграции),
|
||||||
|
|||||||
@@ -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)
|
|
||||||
@@ -52,13 +52,17 @@ TOML, логи — структурированный JSON (`slog`). Подро
|
|||||||
|
|
||||||
## Разработка
|
## Разработка
|
||||||
|
|
||||||
|
Нужны Go 1.26 и [Task](https://taskfile.dev). Полный список задач —
|
||||||
|
`task --list`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp config.example.toml config.toml # локально: db_path -> ./jellybit.db
|
cp config.example.toml config.toml # локально: db_path -> ./jellybit.db
|
||||||
make tidy # go mod tidy
|
task setup # golangci-lint + git-хуки lefthook
|
||||||
make run # go run ./cmd/jellybit --config ./config.toml
|
task tidy # go mod tidy
|
||||||
make test lint # тесты и golangci-lint
|
task run # go run ./cmd/jellybit --config ./config.toml
|
||||||
make build # статический бинарь (linux/amd64) для сервера
|
task test lint # тесты и golangci-lint
|
||||||
make image # docker-образ из готового бинаря
|
task build # статический бинарь (linux/amd64) для сервера
|
||||||
|
task image # docker-образ из готового бинаря
|
||||||
```
|
```
|
||||||
|
|
||||||
## Доставка
|
## Доставка
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user