Prerequisites
Section titled “Prerequisites”- Go 1.24+
- Qdrant (local Docker or Cloud)
- buf (optional, for proto regeneration)
git clone https://github.com/srimon12/qql-go.git cd qql-go go mod downloadgo build -o qql-go ./cmd/qql-goDebug build with source info:
go build -ldflags "-X main.Version=dev" -o qql-go ./cmd/qql-goAll testsSection titled “All tests”go test ./...Specific packageSection titled “Specific package”go test ./internal/parser/... go test ./internal/filters/... go test ./pkg/qql/...VerboseSection titled “Verbose”go test -v ./internal/parser/...With coverageSection titled “With coverage”go test -cover ./... go test -coverprofile=coverage.out ./... go tool cover -html=coverage.outgofmt -l . go vet ./...Protobuf Regeneration
Section titled “Protobuf Regeneration”buf generateRequires buf and the Go protobuf plugins. Generated files go to gen/.
After buildSection titled “After build”./qql-go versionGo run (no build step)Section titled “Go run (no build step)”go run ./cmd/qql-go version go run ./cmd/qql-go connect --url http://localhost:6334 go run ./cmd/qql-go exec "SHOW COLLECTIONS"Dev Workflow
Section titled “Dev Workflow”- Edit code
go build -o qql-go ./cmd/qql-go./qql-go exec "<statement>"go test ./...
Integration Tests
Section titled “Integration Tests”Some tests require a running Qdrant instance. Start one:
docker run -p 6334:6334 qdrant/qdrantThe test suite expects Qdrant on localhost:6334 unless overridden by QDRANT_URL.
Release Validation
Section titled “Release Validation”Before tagging a release:
go run docs/dev_tasks.go release-validate --version <version>This checks:
- Version sync (VERSION file,
commands.go, CHANGELOG) - Quality checks (
gofmt,go vet,go test,go build) - Binary build
- Binary version output
VS Code Setup
Section titled “VS Code Setup”Recommended extensions:
- Go (golang.go) — language server, test runner
- Error Lens — inline error display
- proto3 — syntax highlighting for
proto/qql.proto
.vscode/settings.json:
{ "go.formatTool": "gofmt", "go.lintTool": "golangci-lint", "go.testOnSave": false}