|
| 1 | +CLI_SOURCE_FILES?=./cmd/plugin |
| 2 | +CLI_BINARY_NAME?=binary |
| 3 | +CLI_DESTINATION=./bin/$(CLI_BINARY_NAME) |
| 4 | +MANIFEST_FILE?=./bin/manifest.yml |
| 5 | +WIN_MANIFEST_FILE?=./bin/manifest.windows.yml |
| 6 | + |
| 7 | +GOLANGCI_VERSION=v1.63.4 # Also update golangci-lint GH action in code-health.yml when updating this version |
| 8 | + |
| 9 | +.PHONY: build |
| 10 | +build: ## Generate the binary in ./bin |
| 11 | + @echo "==> Building plugin binary: $(CLI_BINARY_NAME)" |
| 12 | + go build -o $(CLI_DESTINATION) $(CLI_SOURCE_FILES) |
| 13 | + |
| 14 | +.PHONY: tools |
| 15 | +tools: ## Install the dev tools (dependencies) |
| 16 | + @echo "==> Installing dev tools..." |
| 17 | + go telemetry off # disable sending telemetry data, more info: https://go.dev/doc/telemetry |
| 18 | + go install github.com/rhysd/actionlint/cmd/actionlint@latest |
| 19 | + go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@latest |
| 20 | + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(shell go env GOPATH)/bin $(GOLANGCI_VERSION) |
| 21 | + |
| 22 | +.PHONY: clean |
| 23 | +clean: ## Clean binary folders |
| 24 | + rm -rf ./bin ./bin-plugin |
| 25 | + |
| 26 | +.PHONY: local |
| 27 | +local: clean build ## Allow to run the plugin locally |
| 28 | + @echo "==> Configuring plugin locally" |
| 29 | + VERSION=0.0.1-local GITHUB_REPOSITORY_OWNER=owner GITHUB_REPOSITORY_NAME=repo $(MAKE) generate-manifest |
| 30 | + @mkdir -p ./bin-plugin |
| 31 | + cp -r ./bin ./bin-plugin/atlas-cli-plugin-terraform |
| 32 | + @echo |
| 33 | + @echo "==> Plugin is ready to be used locally" |
| 34 | + @echo "run: export ATLAS_CLI_EXTRA_PLUGIN_DIRECTORY=./bin-plugin" |
| 35 | + @echo "then this command should show the plugin: atlas plugin list" |
| 36 | + |
| 37 | +.PHONY: generate-all-manifests |
| 38 | +generate-all-manifests: generate-manifest generate-manifest-windows ## Generate all the manifest files |
| 39 | + |
| 40 | +.PHONY: generate-manifest |
| 41 | +generate-manifest: ## Generate the manifest file for non-windows OSes |
| 42 | + @echo "==> Generating non-windows manifest file" |
| 43 | + @mkdir -p ./bin |
| 44 | + BINARY=$(CLI_BINARY_NAME) envsubst < manifest.template.yml > $(MANIFEST_FILE) |
| 45 | + |
| 46 | +.PHONY: generate-manifest-windows |
| 47 | +generate-manifest-windows: ## Generate the manifest file for windows OSes |
| 48 | + @echo "==> Generating windows manifest file" |
| 49 | + CLI_BINARY_NAME="${CLI_BINARY_NAME}.exe" MANIFEST_FILE="$(WIN_MANIFEST_FILE)" $(MAKE) generate-manifest |
| 50 | + |
| 51 | +.PHONY: help |
| 52 | +.DEFAULT_GOAL := help |
| 53 | +help: |
| 54 | + @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
| 55 | + |
0 commit comments