mirror of
https://github.com/Gouryella/drip.git
synced 2026-02-23 12:53:43 +00:00
137 lines
3.7 KiB
Makefile
137 lines
3.7 KiB
Makefile
.PHONY: all build build-all clean test run-server run-client install deps fmt lint
|
|
|
|
# Variables
|
|
BINARY=bin/drip
|
|
VERSION?=dev
|
|
COMMIT=$(shell git rev-parse --short=10 HEAD 2>/dev/null || echo "unknown")
|
|
BUILD_TIME=$(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
|
LDFLAGS=-ldflags "-s -w -X main.Version=${VERSION} -X main.GitCommit=${COMMIT} -X main.BuildTime=${BUILD_TIME}"
|
|
|
|
# Default target
|
|
all: clean deps test build
|
|
|
|
# Install dependencies
|
|
deps:
|
|
go mod download
|
|
go mod tidy
|
|
|
|
# Build unified binary
|
|
build:
|
|
@echo "Building Drip..."
|
|
@mkdir -p bin
|
|
go build ${LDFLAGS} -o ${BINARY} ./cmd/drip
|
|
@echo "Build complete!"
|
|
|
|
# Build for all platforms
|
|
build-all: clean
|
|
@echo "Building for multiple platforms..."
|
|
@mkdir -p bin
|
|
|
|
# Linux AMD64
|
|
GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o bin/drip-linux-amd64 ./cmd/drip
|
|
|
|
# Linux ARM64
|
|
GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o bin/drip-linux-arm64 ./cmd/drip
|
|
|
|
# macOS AMD64
|
|
GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o bin/drip-darwin-amd64 ./cmd/drip
|
|
|
|
# macOS ARM64 (Apple Silicon)
|
|
GOOS=darwin GOARCH=arm64 go build ${LDFLAGS} -o bin/drip-darwin-arm64 ./cmd/drip
|
|
|
|
# Windows AMD64
|
|
GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o bin/drip-windows-amd64.exe ./cmd/drip
|
|
|
|
# Windows ARM64
|
|
GOOS=windows GOARCH=arm64 go build ${LDFLAGS} -o bin/drip-windows-arm64.exe ./cmd/drip
|
|
|
|
@echo "Multi-platform build complete!"
|
|
|
|
# Run tests
|
|
test:
|
|
go test -v -race -cover ./...
|
|
|
|
# Run tests with coverage
|
|
test-coverage:
|
|
go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report generated: coverage.html"
|
|
|
|
# Benchmark tests
|
|
bench:
|
|
go test -bench=. -benchmem ./...
|
|
|
|
# Run server locally
|
|
run-server:
|
|
go run ./cmd/drip server
|
|
|
|
# Run client locally (example)
|
|
run-client:
|
|
go run ./cmd/drip http 3000
|
|
|
|
# Install globally
|
|
install:
|
|
go install ${LDFLAGS} ./cmd/drip
|
|
|
|
# Format code
|
|
fmt:
|
|
go fmt ./...
|
|
gofmt -s -w .
|
|
|
|
# Lint code
|
|
lint:
|
|
@which golangci-lint > /dev/null || (echo "Installing golangci-lint..." && go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest)
|
|
golangci-lint run ./...
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
@echo "Cleaning..."
|
|
@rm -rf bin/
|
|
@rm -f coverage.out coverage.html
|
|
@echo "Clean complete!"
|
|
|
|
# Docker build
|
|
docker-build:
|
|
docker build -t drip-server:${VERSION} -f deployments/Dockerfile .
|
|
|
|
# Docker run
|
|
docker-run:
|
|
docker run -p 80:80 -p 8080:8080 drip-server:${VERSION}
|
|
|
|
# Generate test certificates
|
|
gen-certs:
|
|
@echo "Generating test TLS 1.3 certificates..."
|
|
@mkdir -p certs
|
|
openssl req -x509 -newkey rsa:4096 -nodes \
|
|
-keyout certs/server-key.pem \
|
|
-out certs/server-cert.pem \
|
|
-days 365 \
|
|
-subj "/CN=localhost"
|
|
@echo "Test certificates generated in certs/"
|
|
@echo "⚠️ Warning: These are self-signed certificates for testing only!"
|
|
|
|
# Help
|
|
help:
|
|
@echo "Drip - Available Make Targets:"
|
|
@echo ""
|
|
@echo " make build - Build server and client"
|
|
@echo " make build-all - Build for all platforms"
|
|
@echo " make test - Run tests"
|
|
@echo " make test-coverage - Run tests with coverage report"
|
|
@echo " make bench - Run benchmark tests"
|
|
@echo " make run-server - Run server locally"
|
|
@echo " make run-client - Run client locally (port 3000)"
|
|
@echo " make gen-certs - Generate test TLS certificates"
|
|
@echo " make install - Install client globally"
|
|
@echo " make fmt - Format code"
|
|
@echo " make lint - Lint code"
|
|
@echo " make clean - Clean build artifacts"
|
|
@echo " make deps - Install dependencies"
|
|
@echo " make docker-build - Build Docker image"
|
|
@echo " make docker-run - Run Docker container"
|
|
@echo ""
|
|
@echo "Build info:"
|
|
@echo " VERSION=${VERSION}"
|
|
@echo " COMMIT=${COMMIT}"
|
|
@echo " BUILD_TIME=${BUILD_TIME}"
|