-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
110 lines (89 loc) · 3 KB
/
Makefile
File metadata and controls
110 lines (89 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
.PHONY: all build build-api build-ui clean test-api lint-api lint-ui swagger dev dev-api dev-ui docker-build docker-build-api docker-build-web docker-up docker-down
# Build variables
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
GIT_COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BUILD_DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
LDFLAGS := -X main.Version=$(VERSION) -X main.GitCommit=$(GIT_COMMIT) -X main.BuildDate=$(BUILD_DATE)
# Directories
BIN_DIR := bin
UI_DIR := ui
all: build
build: build-api build-ui
build-api:
@echo "Building API..."
@mkdir -p $(BIN_DIR)
go build -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/dispatchoor ./cmd/dispatchoor
build-ui:
@echo "Building UI..."
npm install --prefix $(UI_DIR)
npm run --prefix $(UI_DIR) build
clean:
@echo "Cleaning..."
rm -rf $(BIN_DIR)
rm -rf $(UI_DIR)/dist
rm -rf $(UI_DIR)/node_modules
test-api:
@echo "Running API tests..."
go test -race -v ./...
lint-api:
@echo "Linting API..."
golangci-lint run --new-from-rev="origin/master"
lint-ui:
@echo "Linting UI..."
npm install --prefix $(UI_DIR)
npm run --prefix $(UI_DIR) lint
swagger:
@echo "Generating OpenAPI spec..."
swag init -g pkg/api/docs.go -o pkg/api/docs --parseDependency --parseInternal
dev-api:
@echo "Starting API in development mode..."
go run ./cmd/dispatchoor server --config config.yaml
dev-ui:
@echo "Starting UI in development mode..."
npm run --prefix $(UI_DIR) dev
# Run both API and UI in parallel (requires make -j2)
dev: dev-api dev-ui
# Database migrations
migrate:
go run ./cmd/dispatchoor migrate --config config.yaml
# Docker
docker-build: docker-build-api docker-build-web
docker-build-api:
docker build \
--build-arg VERSION=$(VERSION) \
--build-arg GIT_COMMIT=$(GIT_COMMIT) \
--build-arg BUILD_DATE=$(BUILD_DATE) \
-f Dockerfile.api \
-t dispatchoor-api:$(VERSION) \
-t dispatchoor-api:latest \
.
docker-build-web:
docker build \
-f Dockerfile.web \
-t dispatchoor-web:$(VERSION) \
-t dispatchoor-web:latest \
.
docker-up:
docker compose up -d
docker-down:
docker compose down
# Help
help:
@echo "Available targets:"
@echo " all - Build everything (default)"
@echo " build - Build API and UI"
@echo " build-api - Build Go API"
@echo " build-ui - Build React UI"
@echo " clean - Remove build artifacts"
@echo " test-api - Run API tests"
@echo " lint-api - Run Go linter"
@echo " lint-ui - Run UI linter (eslint)"
@echo " swagger - Generate OpenAPI spec"
@echo " dev-api - Start API in dev mode"
@echo " dev-ui - Start UI in dev mode"
@echo " migrate - Run database migrations"
@echo " docker-build - Build all Docker images"
@echo " docker-build-api - Build API Docker image"
@echo " docker-build-web - Build Web Docker image"
@echo " docker-up - Start services with docker compose"
@echo " docker-down - Stop services with docker compose"