mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
626f1105c9
Restructure the codebase so the CLI app consumes the SDK rather than the SDK wrapping CLI internals. This eliminates the circular dependency (sdk -> cmd -> sdk) and establishes pkg/kit as the canonical API. Key changes: - Create pkg/kit/ with InitConfig, SetupAgent, BuildProviderConfig extracted from cmd/root.go and cmd/setup.go as parameterized functions - Move sdk/kit.go -> pkg/kit/kit.go (remove cmd import, use local calls) - Move sdk/types.go -> pkg/kit/types.go - Move main.go -> cmd/kit/main.go (standard Go project layout) - cmd/root.go and cmd/setup.go now delegate to pkg/kit, injecting CLI-specific state (quietFlag) via the Quiet field on AgentSetupOptions - Add setSDKDefaults() for cobra-free SDK usage (viper defaults) - Fix .gitignore: kit -> /kit (was blocking cmd/kit/ and pkg/kit/) - Update .goreleaser.yaml, Taskfile.yml, AGENTS.md, contribute/build.sh, README.md for new cmd/kit entrypoint and pkg/kit import paths - Add plans/ with 10 detailed SDK revamp plans and Taskfile.yml - Delete sdk/ directory entirely
146 lines
4.0 KiB
YAML
146 lines
4.0 KiB
YAML
version: "3"
|
|
|
|
vars:
|
|
BINARY: kit
|
|
OUTPUT_DIR: output
|
|
BUILD_FLAGS: -o {{.OUTPUT_DIR}}/{{.BINARY}}
|
|
LDFLAGS: -s -w -X main.version=dev
|
|
|
|
tasks:
|
|
default:
|
|
desc: Show available tasks
|
|
cmds:
|
|
- task --list-all
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Build
|
|
# -----------------------------------------------------------------------
|
|
|
|
build:
|
|
desc: Build the kit binary
|
|
cmds:
|
|
- go build {{.BUILD_FLAGS}} -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
sources:
|
|
- "**/*.go"
|
|
- go.mod
|
|
- go.sum
|
|
generates:
|
|
- "{{.OUTPUT_DIR}}/{{.BINARY}}"
|
|
|
|
build-all:
|
|
desc: Build for all platforms (linux, darwin, windows)
|
|
cmds:
|
|
- GOOS=linux GOARCH=amd64 go build -o {{.OUTPUT_DIR}}/{{.BINARY}}-linux-amd64 -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
- GOOS=linux GOARCH=arm64 go build -o {{.OUTPUT_DIR}}/{{.BINARY}}-linux-arm64 -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
- GOOS=darwin GOARCH=amd64 go build -o {{.OUTPUT_DIR}}/{{.BINARY}}-darwin-amd64 -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
- GOOS=darwin GOARCH=arm64 go build -o {{.OUTPUT_DIR}}/{{.BINARY}}-darwin-arm64 -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
- GOOS=windows GOARCH=amd64 go build -o {{.OUTPUT_DIR}}/{{.BINARY}}-windows-amd64.exe -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
|
|
install:
|
|
desc: Install kit to $GOPATH/bin
|
|
cmds:
|
|
- go install -ldflags "{{.LDFLAGS}}" ./cmd/kit
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Test
|
|
# -----------------------------------------------------------------------
|
|
|
|
test:
|
|
desc: Run all tests with race detector
|
|
cmds:
|
|
- go test -race ./...
|
|
|
|
test-v:
|
|
desc: Run all tests (verbose)
|
|
cmds:
|
|
- go test -race -v ./...
|
|
|
|
test-short:
|
|
desc: Run tests in short mode (skip long-running tests)
|
|
cmds:
|
|
- go test -race -short ./...
|
|
|
|
test-pkg:
|
|
desc: "Run tests for a specific package (usage: task test-pkg -- ./internal/config)"
|
|
cmds:
|
|
- go test -race -v {{.CLI_ARGS}}
|
|
|
|
test-run:
|
|
desc: "Run a single test by name (usage: task test-run -- TestScriptExecution)"
|
|
cmds:
|
|
- go test -race -v ./... -run {{.CLI_ARGS}}
|
|
|
|
test-cover:
|
|
desc: Run tests with coverage report
|
|
cmds:
|
|
- mkdir -p {{.OUTPUT_DIR}}
|
|
- go test -race -coverprofile={{.OUTPUT_DIR}}/coverage.out ./...
|
|
- go tool cover -html={{.OUTPUT_DIR}}/coverage.out -o {{.OUTPUT_DIR}}/coverage.html
|
|
- echo "Coverage report written to {{.OUTPUT_DIR}}/coverage.html"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Code quality
|
|
# -----------------------------------------------------------------------
|
|
|
|
lint:
|
|
desc: Run golangci-lint and go vet
|
|
cmds:
|
|
- golangci-lint run ./...
|
|
- go vet ./...
|
|
|
|
fmt:
|
|
desc: Format all Go files
|
|
cmds:
|
|
- go fmt ./...
|
|
|
|
fmt-check:
|
|
desc: Check formatting (fails if files need formatting)
|
|
cmds:
|
|
- test -z "$(gofmt -l .)" || (echo "Files need formatting:" && gofmt -l . && exit 1)
|
|
|
|
tidy:
|
|
desc: Tidy go.mod and go.sum
|
|
cmds:
|
|
- go mod tidy
|
|
|
|
check:
|
|
desc: Run all quality checks (fmt, vet, test)
|
|
cmds:
|
|
- task: fmt-check
|
|
- task: lint
|
|
- task: test
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Development
|
|
# -----------------------------------------------------------------------
|
|
|
|
dev:
|
|
desc: Build and run kit with optional args
|
|
cmds:
|
|
- task: build
|
|
- "{{.OUTPUT_DIR}}/{{.BINARY}} {{.CLI_ARGS}}"
|
|
|
|
watch:
|
|
desc: Watch for changes and rebuild (requires watchexec)
|
|
cmds:
|
|
- watchexec -e go -r -- task build
|
|
|
|
clean:
|
|
desc: Remove build artifacts
|
|
cmds:
|
|
- rm -rf {{.OUTPUT_DIR}}
|
|
|
|
# -----------------------------------------------------------------------
|
|
# Release
|
|
# -----------------------------------------------------------------------
|
|
|
|
release-snapshot:
|
|
desc: Build a release snapshot (no publish)
|
|
cmds:
|
|
- goreleaser release --snapshot --clean
|
|
|
|
release-check:
|
|
desc: Validate goreleaser config
|
|
cmds:
|
|
- goreleaser check
|