makocchi-git/kubectl-free

View on GitHub
Makefile

Summary

Maintainability
Test Coverage
SHELL=/bin/bash -o pipefail

GO ?= go
GOLINT ?= golangci-lint

COMMIT_HASH := $(shell git rev-parse --short HEAD 2> /dev/null || true)
GIT_TAG := $(shell git describe --tags --dirty --always)

LDFLAGS := -ldflags '-X main.commit=${COMMIT_HASH} -X main.date=$(shell date +%s) -X main.version=${GIT_TAG}'
TESTPACKAGES := $(shell go list ./... | grep -v /constants | grep -v /cmd/)

kubectl_free ?= _output/kubectl-free

.PHONY: build
build: clean ${kubectl_free}

${kubectl_free}:
    GO111MODULE=on CGO_ENABLED=0 $(GO) build ${LDFLAGS} -o $@ ./cmd/kubectl-free/kubectl-free.go

.PHONY: clean
clean:
    rm -Rf _output

.PHONY: test
test:
    GO111MODULE=on $(GO) test -count=1 -v -race $(TESTPACKAGES)

.PHONY: lint-install
lint-install:
    GO111MODULE=on ${GO} install github.com/golangci/golangci-lint/cmd/golangci-lint

.PHONY: lint
lint: 
    GO111MODULE=on ${GOLINT} run -E stylecheck -E gocritic

.PHONY: fmt
fmt: 
    ${GO} fmt ./cmd/... ./pkg/...