# Directory to place `go install`ed binaries into.
export GOBIN ?= $(shell pwd)/bin

GOLINT = $(GOBIN)/golint
GEN_ATOMICINT = $(GOBIN)/gen-atomicint
GEN_ATOMICWRAPPER = $(GOBIN)/gen-atomicwrapper

GO_FILES ?= $(shell find . '(' -path .git -o -path vendor ')' -prune -o -name '*.go' -print)

# Also update ignore section in .codecov.yml.
COVER_IGNORE_PKGS = \
	go.uber.org/atomic/internal/gen-atomicint \
	go.uber.org/atomic/internal/gen-atomicwrapper

.PHONY: build
build:
	go build ./...

.PHONY: test
test:
	go test -race ./...

.PHONY: gofmt
gofmt:
	$(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
	gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
	@[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" && cat $(FMT_LOG) && false)

$(GOLINT):
	go install golang.org/x/lint/golint

$(GEN_ATOMICWRAPPER): $(wildcard ./internal/gen-atomicwrapper/*)
	go build -o $@ ./internal/gen-atomicwrapper

$(GEN_ATOMICINT): $(wildcard ./internal/gen-atomicint/*)
	go build -o $@ ./internal/gen-atomicint

.PHONY: golint
golint: $(GOLINT)
	$(GOLINT) ./...

.PHONY: lint
lint: gofmt golint generatenodirty

# comma separated list of packages to consider for code coverage.
COVER_PKG = $(shell \
	go list -find ./... | \
	grep -v $(foreach pkg,$(COVER_IGNORE_PKGS),-e "^$(pkg)$$") | \
	paste -sd, -)

.PHONY: cover
cover:
	go test -coverprofile=cover.out -coverpkg  $(COVER_PKG) -v ./...
	go tool cover -html=cover.out -o cover.html

.PHONY: generate
generate: $(GEN_ATOMICINT) $(GEN_ATOMICWRAPPER)
	go generate ./...

.PHONY: generatenodirty
generatenodirty:
	@[ -z "$$(git status --porcelain)" ] || ( \
		echo "Working tree is dirty. Commit your changes first."; \
		exit 1 )
	@make generate
	@status=$$(git status --porcelain); \
		[ -z "$$status" ] || ( \
		echo "Working tree is dirty after `make generate`:"; \
		echo "$$status"; \
		echo "Please ensure that the generated code is up-to-date." )
