Files
rsspipe/Makefile
T
haopengzhan d7ed8876dc
CI Quality Checks & Tests / Frontend Typecheck & Build (push) Successful in 1m28s
CI Quality Checks & Tests / Gitleaks Secret Detection (push) Failing after 3m29s
CI Quality Checks & Tests / Go Lint & Unit Tests (push) Failing after 3h12m8s
fix: resolve all golangci-lint errors and integrate linter into CI/CD, Makefile, and check script
2026-08-24 21:46:52 -07:00

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."