-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGNUmakefile
93 lines (69 loc) · 1.97 KB
/
GNUmakefile
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
NPM?= npm
NPX?= npx
PRETTIER?= $(NPX) prettier
GO?= go
DOCKER?= docker
DOCKER_BUILD_FLAGS?=
DOCKER_BUILD= DOCKER_BUILDKIT=1 $(DOCKER) build $(DOCKER_BUILD_FLAGS)
DOCKER_COMPOSE= $(DOCKER) compose -f compose.yaml $(DOCKER_COMPOSE_FLAGS)
VERSION= unknown
LDFLAGS= -ldflags "-X 'main.version=$(VERSION)' -X 'main.env=prod'"
GCFLAGS= -gcflags="-e"
GO_BUILD= CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) $(GO) build $(LDFLAGS) $(GCFLAGS)
GO_GENERATE= $(GO) generate
CONTROL_SRC:= $(shell find ./controls -type f -name "*.md")
DOCKER_IMAGE_NAME= ghcr.io/getprobo/probo
DOCKER_TAG_NAME?= latest
PROBOD_BIN= bin/probod
PROBOD_SRC= cmd/probod/main.go
.PHONY: all
all: build
.PHONY: lint
lint: fmt-check vet
.PHONY: vet
vet:
$(GO) vet ./...
.PHONY: build
build: bin/probod @probo/console docker-build
.PHONY: docker-build
docker-build:
$(DOCKER_BUILD) --tag $(DOCKER_IMAGE_NAME):$(DOCKER_TAG_NAME) --file Dockerfile .
.PHONY: bin/probod
bin/probod: pkg/api/console/v1/schema/schema.go pkg/api/console/v1/types/types.go pkg/api/console/v1/v1_resolver.go vet
$(GO_BUILD) -o $(PROBOD_BIN) $(PROBOD_SRC)
.PHONY: @probo/console
@probo/console: NODE_ENV=production
@probo/console:
$(NPM) --workspace $@ run build
pkg/api/console/v1/schema/schema.go \
pkg/api/console/v1/types/types.go \
pkg/api/console/v1/v1_resolver.go: pkg/api/console/v1/gqlgen.yaml pkg/api/console/v1/schema.graphql
$(GO_GENERATE) ./pkg/api/console/v1
.PHONY: fmt
fmt: fmt-markdown fmt-go
.PHONY: fmt-go
fmt-go:
go fmt ./...
.PHONY: fmt-markdown
fmt-markdown:
$(PRETTIER) --write --prose-wrap always $(CONTROL_SRC)
.PHONY: fmt-check
fmt-check:
$(PRETTIER) --check --prose-wrap always $(CONTROL_SRC)
.PHONY: clean
clean:
$(RM) -rf bin/*
$(RM) -rf node_modules
$(RM) -rf apps/console/{dist,node_modules}
.PHONY: stack-up
stack-up:
$(DOCKER_COMPOSE) up -d
.PHONY: stack-down
stack-down:
$(DOCKER_COMPOSE) down
.PHONY: stack-ps
stack-ps:
$(DOCKER_COMPOSE) ps
.PHONY: psql
psql:
$(DOCKER_COMPOSE) exec postgres psql -U probod -d probod