-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
49 lines (38 loc) · 2.11 KB
/
Makefile
File metadata and controls
49 lines (38 loc) · 2.11 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
SHELL := /bin/bash
APP_NAME := open-ports
CMD_DIR := ./cmd/$(APP_NAME)
DIST_DIR := dist
TAG ?=
RELEASE_FLAGS ?= --generate-notes
.PHONY: build test bundle bundle-darwin bundle-linux bundle-windows archives release clean
build:
mkdir -p $(DIST_DIR)
go build -o $(DIST_DIR)/$(APP_NAME) $(CMD_DIR)
test:
GOCACHE=/tmp/go-cache go test ./...
bundle: bundle-darwin bundle-linux bundle-windows
bundle-darwin:
mkdir -p $(DIST_DIR)/darwin/amd64 $(DIST_DIR)/darwin/arm64
GOOS=darwin GOARCH=amd64 go build -o $(DIST_DIR)/darwin/amd64/$(APP_NAME) $(CMD_DIR)
GOOS=darwin GOARCH=arm64 go build -o $(DIST_DIR)/darwin/arm64/$(APP_NAME) $(CMD_DIR)
bundle-linux:
mkdir -p $(DIST_DIR)/linux/amd64 $(DIST_DIR)/linux/arm64
GOOS=linux GOARCH=amd64 go build -o $(DIST_DIR)/linux/amd64/$(APP_NAME) $(CMD_DIR)
GOOS=linux GOARCH=arm64 go build -o $(DIST_DIR)/linux/arm64/$(APP_NAME) $(CMD_DIR)
bundle-windows:
mkdir -p $(DIST_DIR)/windows/amd64 $(DIST_DIR)/windows/arm64
GOOS=windows GOARCH=amd64 go build -o $(DIST_DIR)/windows/amd64/$(APP_NAME).exe $(CMD_DIR)
GOOS=windows GOARCH=arm64 go build -o $(DIST_DIR)/windows/arm64/$(APP_NAME).exe $(CMD_DIR)
archives: bundle
tar -C $(DIST_DIR)/darwin/amd64 -czf $(DIST_DIR)/$(APP_NAME)_darwin_amd64.tar.gz $(APP_NAME)
tar -C $(DIST_DIR)/darwin/arm64 -czf $(DIST_DIR)/$(APP_NAME)_darwin_arm64.tar.gz $(APP_NAME)
tar -C $(DIST_DIR)/linux/amd64 -czf $(DIST_DIR)/$(APP_NAME)_linux_amd64.tar.gz $(APP_NAME)
tar -C $(DIST_DIR)/linux/arm64 -czf $(DIST_DIR)/$(APP_NAME)_linux_arm64.tar.gz $(APP_NAME)
zip -j $(DIST_DIR)/$(APP_NAME)_windows_amd64.zip $(DIST_DIR)/windows/amd64/$(APP_NAME).exe
zip -j $(DIST_DIR)/$(APP_NAME)_windows_arm64.zip $(DIST_DIR)/windows/arm64/$(APP_NAME).exe
@cd $(DIST_DIR) && if command -v shasum >/dev/null 2>&1; then shasum -a 256 $(APP_NAME)_* > SHA256SUMS.txt; else sha256sum $(APP_NAME)_* > SHA256SUMS.txt; fi
release: archives
@if [ -z "$(TAG)" ]; then echo "TAG is required (e.g., make release TAG=v1.0.0)"; exit 1; fi
gh release create $(TAG) $(DIST_DIR)/$(APP_NAME)_*.tar.gz $(DIST_DIR)/*.zip $(DIST_DIR)/SHA256SUMS.txt --title "$(TAG)" $(RELEASE_FLAGS)
clean:
rm -rf $(DIST_DIR)