81 lines
2.2 KiB
Makefile
81 lines
2.2 KiB
Makefile
SHELL := /usr/bin/env bash
|
|
|
|
.PHONY: all help build build-frontend build-backend dev test test-race lint check clean docker-build docker-up docker-down
|
|
|
|
# Default target
|
|
all: build
|
|
|
|
## help: Show this help message
|
|
help:
|
|
@echo "RSSPipe Build & Development Commands"
|
|
@echo "====================================="
|
|
@sed -n 's/^##//p' $(MAKEFILE_LIST) | column -t -s ':' | sed -e 's/^/ /'
|
|
|
|
## build: Build frontend and backend production binary
|
|
build: build-frontend build-backend
|
|
|
|
## build-frontend: Build React PWA frontend bundle (Vite + TypeScript)
|
|
build-frontend:
|
|
@echo "==> Building frontend bundle..."
|
|
@cd web && npm install && npm run build
|
|
@echo "✓ Frontend build complete: web/dist"
|
|
|
|
## build-backend: Build Go backend binary
|
|
build-backend:
|
|
@echo "==> Compiling Go binary..."
|
|
@mkdir -p bin
|
|
@CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/rsspipe cmd/server/main.go
|
|
@echo "✓ Backend binary ready: bin/rsspipe"
|
|
|
|
## dev: Run server locally
|
|
dev: build-frontend
|
|
@echo "==> Starting local RSSPipe server..."
|
|
@go run cmd/server/main.go
|
|
|
|
## test: Run backend Go unit tests
|
|
test:
|
|
@echo "==> Running Go unit tests..."
|
|
@go test -v ./...
|
|
|
|
## check: Run all quality gate checks (formatting, vet, tests, tsc, gitleaks)
|
|
check:
|
|
@chmod +x scripts/check.sh
|
|
@./scripts/check.sh
|
|
|
|
## lint: Run gofmt, go vet, and golangci-lint
|
|
lint:
|
|
@echo "==> Verifying Go formatting..."
|
|
@test -z "$$(gofmt -l internal/ cmd/)" || (echo "Unformatted files:" && gofmt -l internal/ cmd/ && exit 1)
|
|
@echo "==> Running Go vet..."
|
|
@go vet ./...
|
|
@if command -v golangci-lint &> /dev/null; then \
|
|
echo "==> Running golangci-lint..."; \
|
|
golangci-lint run; \
|
|
fi
|
|
@echo "✓ Lint passed."
|
|
|
|
## format: Format all Go files with gofmt
|
|
format:
|
|
@echo "==> Formatting Go files..."
|
|
@gofmt -w internal/ cmd/
|
|
@echo "✓ Formatted."
|
|
|
|
## docker-build: Build production Docker image
|
|
docker-build:
|
|
@echo "==> Building Docker image rsspipe:latest..."
|
|
@docker build -t rsspipe:latest .
|
|
|
|
## docker-up: Launch RSSPipe with Docker Compose
|
|
docker-up:
|
|
@docker compose up -d
|
|
|
|
## docker-down: Stop Docker Compose services
|
|
docker-down:
|
|
@docker compose down
|
|
|
|
## clean: Remove built binaries and temporary artifacts
|
|
clean:
|
|
@echo "==> Cleaning build artifacts..."
|
|
@rm -rf bin/ web/dist/
|
|
@echo "✓ Cleaned."
|