-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
171 lines (147 loc) · 5.13 KB
/
Taskfile.yml
File metadata and controls
171 lines (147 loc) · 5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
version: '3'
tasks:
build:
desc: Build the CLI binary
cmds:
- go build -o bin/codebase-interface ./cmd/codebase-interface
- cd bin && ln -sf codebase-interface cbi
test:
desc: Run all tests
cmds:
- go test ./...
test:watch:
desc: Run tests in watch mode
deps: [install-gotestsum]
cmds:
- gotestsum --watch
lint:
desc: Run linting
deps: [install-golangci-lint]
cmds:
- golangci-lint run
tidy:
desc: Tidy Go modules
cmds:
- go mod tidy
install:
desc: Install CLI locally
cmds:
- go install ./cmd/codebase-interface
build:all:
desc: Build binaries for all platforms
cmds:
- mkdir -p bin/releases
- GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o bin/releases/codebase-interface-linux-amd64 ./cmd/codebase-interface
- GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o bin/releases/codebase-interface-darwin-amd64 ./cmd/codebase-interface
- GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o bin/releases/codebase-interface-darwin-arm64 ./cmd/codebase-interface
- GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o bin/releases/codebase-interface-windows-amd64.exe ./cmd/codebase-interface
- echo "✅ Built binaries for all platforms in bin/releases/"
package:
desc: Package binaries for distribution
deps: [build:all]
cmds:
- cd bin/releases && tar -czf codebase-interface-linux-amd64.tar.gz codebase-interface-linux-amd64
- cd bin/releases && tar -czf codebase-interface-darwin-amd64.tar.gz codebase-interface-darwin-amd64
- cd bin/releases && tar -czf codebase-interface-darwin-arm64.tar.gz codebase-interface-darwin-arm64
- cd bin/releases && zip codebase-interface-windows-amd64.zip codebase-interface-windows-amd64.exe
- echo "📦 Packaged binaries for distribution"
release:prepare:
desc: Prepare release artifacts
deps: [test, lint, package]
cmds:
- echo "🚀 Release artifacts prepared in bin/releases/"
clean:
desc: Clean build artifacts
cmds:
- rm -rf bin/
setup:
desc: Set up development environment
deps: [install-gotestsum, install-golangci-lint, docs:install]
cmds:
- go mod download
install-gotestsum:
desc: Install gotestsum for test watching
cmds:
- go install gotest.tools/gotestsum@latest
status:
- which gotestsum
install-golangci-lint:
desc: Install golangci-lint for linting
cmds:
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
status:
- which golangci-lint
validate-self:
desc: Run the CLI on itself for validation
deps: [build]
cmds:
- ./bin/codebase-interface validate
dev:
desc: Development workflow - build and test
deps: [build, test]
docs:serve:
desc: Serve documentation using MkDocs
cmds:
- |
echo "📚 Serving documentation with MkDocs at http://localhost:8000"
echo "Press Ctrl+C to stop the server"
mkdocs serve
docs:build:
desc: Build static documentation site
cmds:
- mkdocs build
- echo "📦 Documentation built in site/ directory"
docs:open:
desc: Serve documentation and open in browser
cmds:
- |
echo "🚀 Starting MkDocs server and opening browser..."
(sleep 3 && (
if command -v xdg-open > /dev/null 2>&1; then
xdg-open http://localhost:8000
elif command -v open > /dev/null 2>&1; then
open http://localhost:8000
else
echo "Please open http://localhost:8000 in your browser"
fi
)) &
mkdocs serve
docs:install:
desc: Install MkDocs and required plugins
cmds:
- pip install mkdocs mkdocs-material mkdocs-git-revision-date-localized-plugin
- echo "📚 MkDocs installed successfully"
docs:check:
desc: Check documentation for common issues (links, formatting)
cmds:
- |
echo "🔍 Checking documentation..."
find docs/ -name "*.md" -exec echo "Checking {}" \; -exec grep -l "TODO\|FIXME\|XXX" {} \; || true
echo "✅ Documentation check complete"
docker:build:
desc: Build Docker image locally
cmds:
- docker build -t ghcr.io/codebase-interface/cli:dev .
- echo "🐳 Docker image built successfully"
docker:test:
desc: Test Docker image functionality
deps: [docker:build]
cmds:
- docker run --rm ghcr.io/codebase-interface/cli:dev --help
- docker run --rm -v $(pwd):/workspace ghcr.io/codebase-interface/cli:dev validate-config
- echo "✅ Docker image tests passed"
install:test:
desc: Test installation script (dry run)
cmds:
- echo "🧪 Testing installation script syntax..."
- bash -n install.sh
- echo "✅ Installation script syntax is valid"
release:check:
desc: Check if ready for release
deps: [test, lint, build:all, docker:test]
cmds:
- echo "🚀 Release readiness check complete"
- echo "✅ All tests passed"
- echo "✅ Linting passed"
- echo "✅ Cross-platform builds successful"
- echo "✅ Docker image functional"