This repository has been archived by the owner on Feb 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
124 lines (98 loc) · 3.58 KB
/
Makefile
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Copyright 2020 Adam Chalkley
#
# https://github.com/atc0005/go-ezproxy
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# REFERENCES
#
# https://github.com/golangci/golangci-lint#install
# https://github.com/golangci/golangci-lint/releases/latest
SHELL = /bin/bash
BUILDCMD = go build -mod=vendor ./...
GOCLEANCMD = go clean -mod=vendor ./...
GITCLEANCMD = git clean -xfd
CHECKSUMCMD = sha256sum -b
.DEFAULT_GOAL := help
##########################################################################
# Targets will not work properly if a file with the same name is ever
# created in this directory. We explicitly declare our targets to be phony
# by making them a prerequisite of the special target .PHONY
##########################################################################
.PHONY: help
## help: prints this help message
help:
@echo "Usage:"
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
.PHONY: lintinstall
## lintinstall: install common linting tools
# https://github.com/golang/go/issues/30515#issuecomment-582044819
lintinstall:
@echo "Installing linting tools"
@export PATH="${PATH}:$(go env GOPATH)/bin"
@echo "Installing latest stable staticcheck version via go install command ..."
go install honnef.co/go/tools/cmd/staticcheck@latest
staticcheck --version
@echo Installing latest stable golangci-lint version per official installation script ...
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(shell go env GOPATH)/bin
golangci-lint --version
@echo "Finished updating linting tools"
.PHONY: linting
## linting: runs common linting checks
linting:
@echo "Running linting tools ..."
@echo "Running go vet ..."
@go vet -mod=vendor $(shell go list -mod=vendor ./... | grep -v /vendor/)
@echo "Running golangci-lint ..."
@golangci-lint --version
@golangci-lint run
@echo "Running staticcheck ..."
@staticcheck --version
@staticcheck $(shell go list -mod=vendor ./... | grep -v /vendor/)
@echo "Finished running linting checks"
.PHONY: gotests
## gotests: runs go test recursively, verbosely
gotests:
@echo "Running go tests ..."
@go test -mod=vendor ./...
@echo "Finished running go tests"
.PHONY: goclean
## goclean: removes local build artifacts, temporary files, etc
goclean:
@echo "Removing object files and cached files ..."
@$(GOCLEANCMD)
.PHONY: clean
## clean: alias for goclean
clean: goclean
.PHONY: gitclean
## gitclean: WARNING - recursively cleans working tree by removing non-versioned files
gitclean:
@echo "Removing non-versioned files ..."
@$(GITCLEANCMD)
.PHONY: pristine
## pristine: run goclean and gitclean to remove local changes
pristine: goclean gitclean
.PHONY: all
# https://stackoverflow.com/questions/3267145/makefile-execute-another-target
## all: run all applicable build steps
all: clean build
@echo "Completed build process ..."
.PHONY: quick
## quick: alias for build recipe
quick: clean build
@echo "Completed tasks for quick build"
.PHONY: build
## build: ensure that packages build
build:
@echo "Building packages ..."
$(BUILDCMD)
@echo "Completed build tasks"