59 lines
2.1 KiB
Makefile
59 lines
2.1 KiB
Makefile
.PHONY: dev build migrate test lint docker-up docker-down clean
|
|
|
|
BINARY := bin/forgebucket
|
|
GO_CMD := ./cmd/forgebucket
|
|
FRONTEND_DIR := frontend
|
|
|
|
# ─── Development ─────────────────────────────────────────────────────────────
|
|
|
|
dev:
|
|
@echo "Starting backend + frontend dev servers..."
|
|
@trap 'kill %1 %2 2>/dev/null; exit' INT; \
|
|
go run $(GO_CMD) & \
|
|
cd $(FRONTEND_DIR) && pnpm dev & \
|
|
wait
|
|
|
|
# ─── Production build ─────────────────────────────────────────────────────────
|
|
|
|
build: build-frontend build-go
|
|
|
|
build-frontend:
|
|
@echo "Building frontend..."
|
|
pnpm -C $(FRONTEND_DIR) build
|
|
@rm -rf web/dist
|
|
@cp -r $(FRONTEND_DIR)/dist web/dist
|
|
|
|
build-go:
|
|
@echo "Building Go binary..."
|
|
@mkdir -p bin
|
|
go build -ldflags="-s -w" -o $(BINARY) $(GO_CMD)
|
|
|
|
# ─── Database ─────────────────────────────────────────────────────────────────
|
|
|
|
migrate:
|
|
@echo "Running database migrations..."
|
|
go run ./cmd/migrate
|
|
|
|
# ─── Docker ───────────────────────────────────────────────────────────────────
|
|
|
|
docker-up:
|
|
docker compose up -d
|
|
|
|
docker-down:
|
|
docker compose down
|
|
|
|
# ─── Quality ──────────────────────────────────────────────────────────────────
|
|
|
|
test:
|
|
go test ./... -race -count=1
|
|
pnpm -C $(FRONTEND_DIR) test --run
|
|
|
|
lint:
|
|
go vet ./...
|
|
pnpm -C $(FRONTEND_DIR) lint
|
|
|
|
# ─── Housekeeping ─────────────────────────────────────────────────────────────
|
|
|
|
clean:
|
|
rm -rf bin web/dist $(FRONTEND_DIR)/dist
|