|
| 1 | +# appwrite-cli - Appwrite CLI |
| 2 | +# Makefile for building, testing, and releasing |
| 3 | + |
| 4 | +BINARY_NAME=appwrite-cli |
| 5 | +VERSION?=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") |
| 6 | +COMMIT?=$(shell git rev-parse --short HEAD 2>/dev/null || echo "none") |
| 7 | +DATE?=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") |
| 8 | +LDFLAGS=-ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.date=$(DATE)" |
| 9 | + |
| 10 | +.PHONY: all build install clean test lint fmt deps help |
| 11 | + |
| 12 | +all: build |
| 13 | + |
| 14 | +## Build |
| 15 | + |
| 16 | +build: ## Build the binary |
| 17 | + go build $(LDFLAGS) -o bin/$(BINARY_NAME) ./cmd/appwrite-cli |
| 18 | + |
| 19 | +build-all: ## Build for all platforms |
| 20 | + GOOS=darwin GOARCH=amd64 go build $(LDFLAGS) -o bin/$(BINARY_NAME)-darwin-amd64 ./cmd/appwrite-cli |
| 21 | + GOOS=darwin GOARCH=arm64 go build $(LDFLAGS) -o bin/$(BINARY_NAME)-darwin-arm64 ./cmd/appwrite-cli |
| 22 | + GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o bin/$(BINARY_NAME)-linux-amd64 ./cmd/appwrite-cli |
| 23 | + GOOS=linux GOARCH=arm64 go build $(LDFLAGS) -o bin/$(BINARY_NAME)-linux-arm64 ./cmd/appwrite-cli |
| 24 | + GOOS=windows GOARCH=amd64 go build $(LDFLAGS) -o bin/$(BINARY_NAME)-windows-amd64.exe ./cmd/appwrite-cli |
| 25 | + |
| 26 | +install: build ## Install to $GOPATH/bin |
| 27 | + cp bin/$(BINARY_NAME) $(GOPATH)/bin/$(BINARY_NAME) |
| 28 | + |
| 29 | +## Development |
| 30 | + |
| 31 | +deps: ## Download dependencies |
| 32 | + go mod download |
| 33 | + go mod tidy |
| 34 | + |
| 35 | +fmt: ## Format code |
| 36 | + go fmt ./... |
| 37 | + |
| 38 | +lint: ## Run linter |
| 39 | + golangci-lint run |
| 40 | + |
| 41 | +test: ## Run tests |
| 42 | + go test -v ./... |
| 43 | + |
| 44 | +test-coverage: ## Run tests with coverage |
| 45 | + go test -v -coverprofile=coverage.out ./... |
| 46 | + go tool cover -html=coverage.out -o coverage.html |
| 47 | + |
| 48 | +## Release |
| 49 | + |
| 50 | +release-snapshot: ## Create a snapshot release (no publish) |
| 51 | + goreleaser release --snapshot --clean |
| 52 | + |
| 53 | +release: ## Create a release (requires GITHUB_TOKEN) |
| 54 | + goreleaser release --clean |
| 55 | + |
| 56 | +## Utilities |
| 57 | + |
| 58 | +clean: ## Remove build artifacts |
| 59 | + rm -rf bin/ |
| 60 | + rm -rf dist/ |
| 61 | + rm -f coverage.out coverage.html |
| 62 | + |
| 63 | +version: ## Print version |
| 64 | + @echo $(VERSION) |
| 65 | + |
| 66 | +help: ## Show this help |
| 67 | + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' |
0 commit comments