forked from vmware-tanzu/tanzu-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
124 lines (102 loc) · 3.94 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 2022 VMware, Inc. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
# Build tooling that is used for the main project
# Ensure Make is run with bash shell as some syntax below is bash-specific
SHELL := /usr/bin/env bash
.DEFAULT_GOAL := help
# Use GOPROXY environment variable if set
GOPROXY := $(shell go env GOPROXY)
ifeq (,$(strip $(GOPROXY)))
GOPROXY := https://proxy.golang.org
endif
export GOPROXY
# Directories.
ROOT_DIR:=$(shell git rev-parse --show-toplevel)
BIN_DIR := bin
GOIMPORTS_VERSION=0.1.12
VALE_VERSION=2.20.1
GOLANGCI_LINT_VERSION=1.52.2
MISSPELL_VERSION=0.3.4
CONTROLLER_TOOLS_VERSION=0.9.2
IMGPKG_VERSION=v0.35.0
KUBECTL_VERSION=v1.26.0
KIND_VERSION=v0.17.0
GINKGO_VERSION=v2.9.2
# Host information.
HOST_OS=$(shell go env GOOS)
HOST_ARCH=$(shell go env GOARCH)
# Binaries.
GOIMPORTS := $(BIN_DIR)/goimports
VALE := $(BIN_DIR)/vale
GOLANGCI_LINT := $(BIN_DIR)/golangci-lint
MISSPELL := $(BIN_DIR)/misspell
CONTROLLER_GEN := $(BIN_DIR)/controller-gen
IMGPKG := $(BIN_DIR)/imgpkg
KUBECTL := $(BIN_DIR)/kubectl
KIND := $(BIN_DIR)/kind
GINKGO := $(BIN_DIR)/ginkgo
## --------------------------------------
## Help
## --------------------------------------
help: ## Display this help
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
## --------------------------------------
## Binaries
## --------------------------------------
goimports: $(GOIMPORTS) ## Install goimports
$(GOIMPORTS):
mkdir -p $(BIN_DIR)
GOBIN=$(ROOT_DIR)/hack/tools/$(BIN_DIR) go install golang.org/x/tools/cmd/goimports@v$(GOIMPORTS_VERSION)
golangci-lint: $(GOLANGCI_LINT) ## Install golangci-lint
$(GOLANGCI_LINT):
mkdir -p $(BIN_DIR)
GOBIN=$(ROOT_DIR)/hack/tools/$(BIN_DIR) go install github.com/golangci/golangci-lint/cmd/golangci-lint@v$(GOLANGCI_LINT_VERSION)
vale: $(VALE)
$(VALE):
mkdir -p $(BIN_DIR)
# vale uses 'macOS' for darwin, 'Linux' for linux, '64-bit' for amd64 (yet arm64 remains unchanged)
# for its release asset naming, so manually map them
curl -sfL https://github.com/errata-ai/vale/releases/download/v$(VALE_VERSION)/vale_$(VALE_VERSION)_$(shell echo $(HOST_OS) | \
sed 's,darwin,macOS,g'| sed 's,linux,Linux,g')_$(shell echo $(HOST_ARCH) | sed 's,amd64,64-bit,g').tar.gz | tar -xz -C /tmp/
mv /tmp/vale $(@)
chmod a+x $(@)
controller-gen: $(CONTROLLER_GEN) ## Build controller-gen
$(CONTROLLER_GEN):
mkdir -p $(BIN_DIR)
#go build -tags=tools -o $@ sigs.k8s.io/controller-tools/cmd/controller-gen
GOBIN=$(ROOT_DIR)/hack/tools/$(BIN_DIR) go install sigs.k8s.io/controller-tools/cmd/controller-gen@v$(CONTROLLER_TOOLS_VERSION)
misspell: $(MISSPELL) ## Install misspell
$(MISSPELL):
mkdir -p $(BIN_DIR)
GOBIN=$(ROOT_DIR)/hack/tools/$(BIN_DIR) go install github.com/client9/misspell/cmd/misspell@v$(MISSPELL_VERSION)
imgpkg: $(IMGPKG) ## Install imgpkg
$(IMGPKG):
mkdir -p $(BIN_DIR)
curl -LO https://github.com/vmware-tanzu/carvel-imgpkg/releases/download/$(IMGPKG_VERSION)/imgpkg-$(HOST_OS)-$(HOST_ARCH)
mv imgpkg-$(HOST_OS)-$(HOST_ARCH) $(@)
chmod a+x $(@)
kubectl: $(KUBECTL)
$(KUBECTL):
mkdir -p $(BIN_DIR)
curl -LO https://dl.k8s.io/release/$(KUBECTL_VERSION)/bin/$(HOST_OS)/$(HOST_ARCH)/kubectl
mv kubectl $(@)
chmod a+x $(@)
kind: $(KIND)
$(KIND):
mkdir -p $(BIN_DIR)
echo $(KIND_VERSION)
echo $(HOST_OS)
echo $(HOST_ARCH)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/$(KIND_VERSION)/kind-$(HOST_OS)-$(HOST_ARCH)
mv ./kind $(@)
chmod a+x $(@)
ginkgo: $(GINKGO) ## Install ginkgo
$(GINKGO):
mkdir -p $(BIN_DIR)
GOBIN=$(ROOT_DIR)/hack/tools/$(BIN_DIR) go install github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION)
## --------------------------------------
## Cleanup
## --------------------------------------
.PHONY: clean
clean: ## Remove all generated binaries
rm -rf bin