* fix(container): prevent data race in State.Get and State.All Return copies of Container structs instead of pointers to the map entries. This prevents data races when containers are modified concurrently by waitForExit and Stop. Fixes #76 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(updater): resolve PkgVersion duplicate declaration Remove var PkgVersion from updater.go since go generate creates const PkgVersion in version.go. Track version.go in git to ensure builds work without running go generate first. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * build: add release build tasks with linker flags for smaller binary Add -s -w linker flags to strip debug info and symbol table: - cli:build:release - release build to ./bin/core - cli:install:release - release install to system PATH Binary size reduced from 19MB to 14MB (26% reduction). Fixes #226 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
152 lines
3.1 KiB
YAML
152 lines
3.1 KiB
YAML
version: '3'
|
|
|
|
vars:
|
|
VERSION:
|
|
sh: git describe --tags --exact-match 2>/dev/null || echo "dev"
|
|
# Base ldflags for version injection
|
|
LDFLAGS_BASE: "-X github.com/host-uk/core/pkg/cli.AppVersion={{.VERSION}}"
|
|
# Development build: includes debug info
|
|
LDFLAGS: "{{.LDFLAGS_BASE}}"
|
|
# Release build: strips debug info and symbol table for smaller binary
|
|
LDFLAGS_RELEASE: "-s -w {{.LDFLAGS_BASE}}"
|
|
|
|
tasks:
|
|
# --- CLI Management ---
|
|
cli:build:
|
|
desc: "Build core CLI to ./bin/core (dev build with debug info)"
|
|
cmds:
|
|
- go build -ldflags '{{.LDFLAGS}}' -o ./bin/core .
|
|
|
|
cli:build:release:
|
|
desc: "Build core CLI for release (smaller binary, no debug info)"
|
|
cmds:
|
|
- go build -ldflags '{{.LDFLAGS_RELEASE}}' -o ./bin/core .
|
|
|
|
cli:install:
|
|
desc: "Install core CLI to system PATH (dev build)"
|
|
cmds:
|
|
- go install -ldflags '{{.LDFLAGS}}' .
|
|
|
|
cli:install:release:
|
|
desc: "Install core CLI for release (smaller binary)"
|
|
cmds:
|
|
- go install -ldflags '{{.LDFLAGS_RELEASE}}' .
|
|
|
|
# --- Development ---
|
|
test:
|
|
desc: "Run all tests"
|
|
cmds:
|
|
- core test
|
|
|
|
test:verbose:
|
|
desc: "Run all tests with verbose output"
|
|
cmds:
|
|
- core test --verbose
|
|
|
|
test:run:
|
|
desc: "Run specific test (use: task test:run -- TestName)"
|
|
cmds:
|
|
- core test --run {{.CLI_ARGS}}
|
|
|
|
cov:
|
|
desc: "Run tests with coverage report"
|
|
cmds:
|
|
- core go cov
|
|
|
|
fmt:
|
|
desc: "Format Go code"
|
|
cmds:
|
|
- core go fmt
|
|
|
|
lint:
|
|
desc: "Run linter"
|
|
cmds:
|
|
- core go lint
|
|
|
|
mod:tidy:
|
|
desc: "Run go mod tidy"
|
|
cmds:
|
|
- core go mod tidy
|
|
|
|
# --- Quality Assurance ---
|
|
qa:
|
|
desc: "Run QA: fmt, vet, lint, test"
|
|
cmds:
|
|
- core go qa
|
|
|
|
qa:quick:
|
|
desc: "Quick QA: fmt, vet, lint only"
|
|
cmds:
|
|
- core go qa quick
|
|
|
|
qa:full:
|
|
desc: "Full QA: + race, vuln, security"
|
|
cmds:
|
|
- core go qa full
|
|
|
|
qa:fix:
|
|
desc: "QA with auto-fix"
|
|
cmds:
|
|
- core go qa --fix
|
|
|
|
# --- Build ---
|
|
build:
|
|
desc: "Build project with auto-detection"
|
|
cmds:
|
|
- core build
|
|
|
|
build:ci:
|
|
desc: "Build for CI (all targets, checksums)"
|
|
cmds:
|
|
- core build --ci
|
|
|
|
# --- Environment ---
|
|
doctor:
|
|
desc: "Check development environment"
|
|
cmds:
|
|
- core doctor
|
|
|
|
doctor:verbose:
|
|
desc: "Check environment with details"
|
|
cmds:
|
|
- core doctor --verbose
|
|
|
|
# --- Code Review ---
|
|
review:
|
|
desc: "Run CodeRabbit review"
|
|
cmds:
|
|
- coderabbit review --prompt-only
|
|
|
|
check:
|
|
desc: "Tidy, test, and review"
|
|
cmds:
|
|
- task: mod:tidy
|
|
- task: test
|
|
- task: review
|
|
|
|
# --- i18n ---
|
|
i18n:generate:
|
|
desc: "Regenerate i18n key constants"
|
|
cmds:
|
|
- go generate ./pkg/i18n/...
|
|
|
|
i18n:validate:
|
|
desc: "Validate i18n key usage"
|
|
cmds:
|
|
- go run ./internal/tools/i18n-validate ./...
|
|
|
|
# --- Multi-repo (when in workspace) ---
|
|
dev:health:
|
|
desc: "Check health of all repos"
|
|
cmds:
|
|
- core dev health
|
|
|
|
dev:work:
|
|
desc: "Full workflow: status, commit, push"
|
|
cmds:
|
|
- core dev work
|
|
|
|
dev:status:
|
|
desc: "Show status of all repos"
|
|
cmds:
|
|
- core dev work --status
|