Files
shush/Makefile
T
carraes cc41807975 feat: add comprehensive Makefile and update CLAUDE.md
- Add Makefile with common development commands:
  * Build targets (dev/optimized/cross-platform)
  * Code quality checks (lint, vet, fmt, test)
  * Release management (tag, push, version)
  * Development helpers (watch, demo, clean)
- Update CLAUDE.md with Makefile-based workflow
- Add development workflow guidance
- Include comprehensive help system with colored output
2025-07-05 21:57:10 -03:00

126 lines
3.5 KiB
Makefile

# Shush - Comment Removal CLI Tool
.PHONY: help build install clean test lint fmt vet run dev release tag push check deps update-deps
# Default target
help: ## Show this help message
@echo "Shush - Comment Removal CLI Tool"
@echo ""
@echo "Available commands:"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
# Build commands
build: ## Build the binary
go build -ldflags="-w -s" -o shush ./cmd/shush
build-dev: ## Build without optimizations (faster, for development)
go build -o shush ./cmd/shush
install: build ## Build and install to GOPATH/bin
go install ./cmd/shush
# Cross-platform builds
build-all: ## Build for all platforms
GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o dist/shush-linux-amd64 ./cmd/shush
GOOS=linux GOARCH=arm64 go build -ldflags="-w -s" -o dist/shush-linux-arm64 ./cmd/shush
GOOS=darwin GOARCH=amd64 go build -ldflags="-w -s" -o dist/shush-darwin-amd64 ./cmd/shush
GOOS=darwin GOARCH=arm64 go build -ldflags="-w -s" -o dist/shush-darwin-arm64 ./cmd/shush
# Development commands
run: build-dev ## Build and run with example file
./shush --help
dev: build-dev ## Quick development cycle (build + show help)
./shush --llm | head -20
test: ## Run tests
go test -v ./...
test-race: ## Run tests with race detection
go test -race -v ./...
test-cover: ## Run tests with coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
@echo "Coverage report: coverage.html"
# Code quality
lint: ## Run golangci-lint
@if command -v golangci-lint >/dev/null 2>&1; then \
golangci-lint run; \
else \
echo "golangci-lint not installed. Install with: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"; \
fi
fmt: ## Format code
go fmt ./...
vet: ## Run go vet
go vet ./...
check: fmt vet lint test ## Run all checks (format, vet, lint, test)
# Dependency management
deps: ## Download dependencies
go mod download
tidy: ## Tidy dependencies
go mod tidy
update-deps: ## Update dependencies
go get -u ./...
go mod tidy
# Release commands
version: ## Show current version
@grep 'var version' cmd/shush/main.go | cut -d'"' -f2
release: clean check build ## Prepare for release (clean, check, build)
@echo "Ready for release. Current version: $$(make version)"
@echo "To create release:"
@echo " 1. Update version in cmd/shush/main.go"
@echo " 2. Run: make tag"
@echo " 3. Run: make push"
tag: ## Create and push git tag for current version
$(eval VERSION := $(shell make version))
git tag -a v$(VERSION) -m "Release v$(VERSION)"
@echo "Created tag v$(VERSION)"
@echo "Run 'make push' to push tag and trigger release"
push: ## Push current branch and tags
git push upstream
git push upstream --tags
# Utility commands
clean: ## Clean build artifacts
rm -f shush
rm -rf dist/
rm -f coverage.out coverage.html
demo: build-dev ## Run demo commands
@echo "=== Shush Demo ==="
@echo "1. Version info:"
./shush --version
@echo ""
@echo "2. Help output:"
./shush --help
@echo ""
@echo "3. LLM guide preview:"
./shush --llm | head -10
# Development helpers
watch: ## Watch for changes and rebuild (requires entr)
@if command -v entr >/dev/null 2>&1; then \
find . -name "*.go" | entr -r make dev; \
else \
echo "entr not installed. Install with your package manager"; \
echo " macOS: brew install entr"; \
echo " Ubuntu: apt install entr"; \
fi
size: build ## Show binary size
@ls -lh shush | awk '{print "Binary size: " $$5}'
# Create dist directory
dist:
mkdir -p dist