-
Notifications
You must be signed in to change notification settings - Fork 1
/
GNUmakefile
87 lines (71 loc) · 2.96 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
PROVIDER_DIR := $(PWD)
TEST?=$$(go list ./... | grep -v 'vendor')
HOSTNAME=keyfactor.com
GOFMT_FILES := $$(find $(PROVIDER_DIR) -name '*.go' |grep -v vendor)
NAMESPACE=keyfactor
WEBSITE_REPO=https://github.com/Keyfactor/kfutil
NAME=kfutil
BINARY=${NAME}
VERSION := $(GITHUB_REF_NAME)
ifeq ($(VERSION),)
VERSION := v1.2.1
endif
OS_ARCH := $(shell go env GOOS)_$(shell go env GOARCH)
BASEDIR := ${HOME}/go/bin
INSTALLDIR := ${BASEDIR}
MARKDOWN_FILE := README.md
TEMP_TOC_FILE := temp_toc.md
default: build
build: fmt
go install
release:
mkdir -p ./bin/${BINARY}_${VERSION}_darwin_amd64
GOOS=darwin GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_darwin_amd64/kfutil
cp README.md ./bin/${BINARY}_${VERSION}_darwin_amd64
cp LICENSE ./bin/${BINARY}_${VERSION}_darwin_amd64
cp CHANGELOG.md ./bin/${BINARY}_${VERSION}_darwin_amd64
cp -r docs ./bin/${BINARY}_${VERSION}_darwin_amd64
cd ./bin && zip ./${BINARY}_${VERSION}_darwin_amd64.zip ./${BINARY}_${VERSION}_darwin_amd64/* && cd ..
rm -rf ./bin/${BINARY}_${VERSION}_darwin_amd64
GOOS=freebsd GOARCH=386 go build -o ./bin/${BINARY}_${VERSION}_freebsd_386
GOOS=freebsd GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_freebsd_amd64
GOOS=freebsd GOARCH=arm go build -o ./bin/${BINARY}_${VERSION}_freebsd_arm
GOOS=linux GOARCH=386 go build -o ./bin/${BINARY}_${VERSION}_linux_386
GOOS=linux GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_linux_amd64
GOOS=linux GOARCH=arm go build -o ./bin/${BINARY}_${VERSION}_linux_arm
GOOS=openbsd GOARCH=386 go build -o ./bin/${BINARY}_${VERSION}_openbsd_386
GOOS=openbsd GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_openbsd_amd64
GOOS=solaris GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_solaris_amd64
GOOS=windows GOARCH=386 go build -o ./bin/${BINARY}_${VERSION}_windows_386
GOOS=windows GOARCH=amd64 go build -o ./bin/${BINARY}_${VERSION}_windows_amd64
install: fmt
go build -o ${BINARY}
rm -rf ${INSTALLDIR}/${BINARY}
mkdir -p ${INSTALLDIR}
chmod oug+x ${BINARY}
cp ${BINARY} ${INSTALLDIR}
mkdir -p ${HOME}/.local/bin || true
mv ${BINARY} ${HOME}/.local/bin/${BINARY}
vendor:
go mod vendor
version:
@echo ${VERSION}
setversion:
sed -i '' -e 's/VERSION = ".*"/VERSION = "$(VERSION)"/' pkg/version/version.go
test:
go test -i $(TEST) || exit 1
echo $(TEST) | xargs -t -n4 go test $(TESTARGS) -timeout=30s -parallel=4
fmt:
gofmt -w $(GOFMT_FILES)
prerelease: fmt setversion
git tag -d $(VERSION) || true
git push origin :$(VERSION) || true
git tag $(VERSION)
git push origin $(VERSION)
check_toc:
@grep -q 'TOC_START' $(MARKDOWN_FILE) && echo "TOC already exists." || (echo "TOC not found. Generating..." && $(MAKE) generate_toc)
generate_toc:
# check if markdown-toc is installed and if not install it
@command -v markdown-toc >/dev/null 2>&1 || (echo "markdown-toc is not installed. Installing..." && npm install -g markdown-toc)
markdown-toc -i $(MARKDOWN_FILE) --skip 'Table of Contents'
.PHONY: build prerelease release install test fmt vendor version setversion