SHELL := /bin/bash GO_FLAGS := -ldflags '-extldflags "-static"' -tags=netgo BINDIR := bin EXECUTABLE_CLI := airshipctl SCRIPTS_DIR := scripts # linting LINTER_CMD := "github.com/golangci/golangci-lint/cmd/golangci-lint" run ADDTL_LINTERS := goconst,gofmt,unparam # docker DOCKER_MAKE_TARGET := build # go options PKG := ./... TESTS := . .PHONY: get-modules get-modules: @go mod download .PHONY: build build: get-modules @GO111MODULE=on CGO_ENABLED=0 go build -o $(BINDIR)/$(EXECUTABLE_CLI) $(GO_FLAGS) .PHONY: test test: build test: lint test: TESTFLAGS += -race -v test: unit-tests .PHONY: unit-tests unit-tests: build @echo "Performing unit test step..." @GO111MODULE=on go test -run $(TESTS) $(PKG) $(TESTFLAGS) @echo "All unit tests passed" .PHONY: lint lint: @echo "Performing linting step..." @GO111MODULE=on go run ${LINTER_CMD} --enable ${ADDTL_LINTERS} @echo "Linting completed successfully" .PHONY: docker-image docker-image: @docker build . --build-arg MAKE_TARGET=$(DOCKER_MAKE_TARGET) .PHONY: docker-image-unit-tests docker-image-unit-tests: DOCKER_MAKE_TARGET = unit-tests docker-image-unit-tests: docker-image .PHONY: docker-image-lint docker-image-lint: DOCKER_MAKE_TARGET = lint docker-image-lint: docker-image .PHONY: clean clean: @rm -fr $(BINDIR) .PHONY: docs docs: @echo "TODO" .PHONY: update-golden update-golden: TESTFLAGS += -update -v update-golden: PKG = github.com/ian-howell/airshipctl/cmd/... update-golden: @GO111MODULE=on go test $(PKG) $(TESTFLAGS)