-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathMakefile
More file actions
84 lines (70 loc) · 2.57 KB
/
Copy pathMakefile
File metadata and controls
84 lines (70 loc) · 2.57 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
CURRENT_VERSION_MAJOR = 4
CURRENT_VERSION_MINOR = 4
CURRENT_VERSION_PATCH = 0
REQUIRED_VERSION_MAJOR = 4
REQUIRED_VERSION_MINOR = 3
REQUIRED_VERSION_PATCH = 0
# Caution: software versioning mechanism depends on format of above lines in this file
.PHONY: build digest clean run gen version
GO ?= go
ASSETS_DIR = ./build/assets
SRC_DIR = ./cmd/observer
DIST_DIR = ./build/dist
BINARY = observer
ifeq (${GOOS}, windows)
BINARY := $(BINARY).exe
endif
TIMESTAMP = $(shell date +%s)
COMMIT = $(shell git rev-parse --short HEAD)
BUILD_FLAGS = -s -w \
-X main.versionMajor=$(CURRENT_VERSION_MAJOR) \
-X main.versionMinor=$(CURRENT_VERSION_MINOR) \
-X main.versionPatch=$(CURRENT_VERSION_PATCH) \
-X main.versionPreRelease=${VERSION_PRE_RELEASE} \
-X main.buildToolchain=${BUILD_TOOLCHAIN} \
-X main.buildChannel=${BUILD_CHANNEL} \
-X main.buildTimestamp=$(TIMESTAMP) \
-X main.buildCommit=$(COMMIT)
BUILD_ARGS = -v -trimpath
build:
@echo "[Info] Building project, output file path: $(DIST_DIR)/$(BINARY)"
@mkdir -p $(DIST_DIR)
CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} GOARM=${GOARM} GOMIPS=${GOMIPS} \
$(GO) build -ldflags="$(BUILD_FLAGS)" $(BUILD_ARGS) -o $(DIST_DIR)/$(BINARY) $(SRC_DIR)
@cp -r $(ASSETS_DIR) $(DIST_DIR)
@echo "[Info] Build completed."
digest:
ifneq ($(wildcard $(DIST_DIR)/$(BINARY)),)
@openssl dgst -md5 $(DIST_DIR)/$(BINARY)* | awk '{print "MD5=" $$2}'
@openssl dgst -sha1 $(DIST_DIR)/$(BINARY)* | awk '{print "SHA1=" $$2}'
@openssl dgst -sha256 $(DIST_DIR)/$(BINARY)* | awk '{print "SHA2-256=" $$2}'
@openssl dgst -sha512 $(DIST_DIR)/$(BINARY)* | awk '{print "SHA2-512=" $$2}'
else
@echo "[Error] Binary $(DIST_DIR)/$(BINARY) not found, please build first."
@exit 1
endif
run:
@mkdir -p $(DIST_DIR)
ifeq ($(wildcard $(DIST_DIR)/config.json.local),)
@cp $(ASSETS_DIR)/config.json $(DIST_DIR)/config.json.local
endif
@echo "[Info] Running project..."
$(GO) run -gcflags="all=-N -l" -race $(SRC_DIR) --config $(DIST_DIR)/config.json.local
clean:
@echo "[Warn] Cleaning up project..."
@rm -rf $(DIST_DIR)/*
gen:
ifeq ($(shell command -v gqlgen 2> /dev/null),)
@echo "[Info] Installing gqlgen..."
@$(GO) get github.com/99designs/gqlgen
@$(GO) install github.com/99designs/gqlgen
endif
@echo "[Info] Generating GraphQL code..."
@gqlgen generate
version:
@echo -n 'latest_major=$(CURRENT_VERSION_MAJOR);'
@echo -n 'latest_minor=$(CURRENT_VERSION_MINOR);'
@echo -n 'latest_patch=$(CURRENT_VERSION_PATCH);'
@echo -n 'required_major=$(REQUIRED_VERSION_MAJOR);'
@echo -n 'required_minor=$(REQUIRED_VERSION_MINOR);'
@echo -n 'required_patch=$(REQUIRED_VERSION_PATCH)'