Skip to content

feat: Add --json flag for LLM-friendly CLI help output #493

feat: Add --json flag for LLM-friendly CLI help output

feat: Add --json flag for LLM-friendly CLI help output #493

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
cache: true
- name: Build
run: go build -v ./...
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
cache: true
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v7
with:
version: v2.8.0
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
cache: true
- name: Install tmux
run: sudo apt-get update && sudo apt-get install -y tmux
- name: Run unit tests with coverage
env:
TMUX_TESTS: "1"
run: |
go test -coverprofile=coverage.out -covermode=atomic ./internal/... ./pkg/...
go tool cover -func=coverage.out
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage.out
retention-days: 7
coverage-check:
name: Coverage Check
runs-on: ubuntu-latest
needs: unit-tests
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
cache: true
- name: Install tmux
run: sudo apt-get update && sudo apt-get install -y tmux
- name: Check coverage thresholds
env:
TMUX_TESTS: "1"
run: |
go test -coverprofile=coverage.out -covermode=atomic ./internal/... ./pkg/...
echo "## Coverage Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Package | Coverage |" >> $GITHUB_STEP_SUMMARY
echo "|---------|----------|" >> $GITHUB_STEP_SUMMARY
# Parse coverage and check thresholds
go tool cover -func=coverage.out | while read line; do
if echo "$line" | grep -q "total:"; then
total=$(echo "$line" | awk '{print $NF}' | tr -d '%')
echo "| **Total** | **${total}%** |" >> $GITHUB_STEP_SUMMARY
echo ""
echo "Total coverage: ${total}%"
fi
done
# Show per-package summary
echo ""
echo "Per-package coverage:"
go test -cover ./internal/... ./pkg/... 2>&1 | grep "coverage:" | sort
e2e-tests:
name: E2E Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
cache: true
- name: Install tmux
run: sudo apt-get update && sudo apt-get install -y tmux
- name: Configure git
run: |
git config --global user.email "ci@github.com"
git config --global user.name "GitHub CI"
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Claude CLI
run: npm install -g @anthropic-ai/claude-code
- name: Run e2e tests
run: go test -v ./test/...
verify-generated-docs:
name: Verify Generated Docs
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25'
cache: true
- name: Regenerate docs
run: go generate ./pkg/config/...
- name: Check for uncommitted changes
run: |
if ! git diff --quiet docs/DIRECTORY_STRUCTURE.md; then
echo "Error: docs/DIRECTORY_STRUCTURE.md is out of date!"
echo "Run 'go generate ./pkg/config/...' and commit the changes."
echo ""
echo "Diff:"
git diff docs/DIRECTORY_STRUCTURE.md
exit 1
fi
echo "Generated docs are up to date."