Codebase list golang-github-vbatts-go-mtree / b37d6dc7-7334-4ece-84e6-4b44d0746757/main Makefile
b37d6dc7-7334-4ece-84e6-4b44d0746757/main

Tree @b37d6dc7-7334-4ece-84e6-4b44d0746757/main (Download .tar.gz)

Makefile @b37d6dc7-7334-4ece-84e6-4b44d0746757/main

1cf0881
 
 
 
 
 
 
 
86518e4
1cf0881
 
 
 
 
 
 
86518e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1cf0881
 
 
 
 
86518e4
1cf0881
 
86518e4
1cf0881
 
86518e4
1cf0881
 
 
 
 
 
 
86518e4
 
4de5200
86518e4
4de5200
1cf0881
 
 
 
 
 
 
86518e4
1cf0881
 
86518e4
1cf0881
 
 
 
 
 
 
86518e4
1cf0881
 
86518e4
1cf0881
 
 
 
 
86518e4
1cf0881
4de5200
86518e4
 
 
 
 
 
4de5200
1cf0881
 
 
 
 
 
 
 
 
 
 
86518e4
1cf0881
 
 
 
 
BUILD := gomtree
BUILDPATH := github.com/vbatts/go-mtree/cmd/gomtree
CWD := $(shell pwd)
SOURCE_FILES := $(shell find . -type f -name "*.go")
CLEAN_FILES := *~
TAGS :=
ARCHES := linux,386 linux,amd64 linux,arm linux,arm64 openbsd,amd64 windows,amd64 darwin,amd64
GO_VER := go1.14

default: build validation

.PHONY: validation
validation: .test .lint .vet .cli.test

.PHONY: validation.tags
validation.tags: .test.tags .vet.tags .cli.test .staticcheck

.PHONY: gocyclo
gocyclo: .gocyclo

CLEAN_FILES += .gocyclo

.gocyclo:
	gocyclo -avg -over 15 -ignore 'vendor/*' . && touch $@

.PHONY: staticcheck
staticcheck: .staticcheck

CLEAN_FILES += .staticcheck

.staticcheck:
	staticcheck . && touch $@

.PHONY: test
test: .test

CLEAN_FILES += .test .test.tags
NO_VENDOR_DIR := $(shell find . -type f -name '*.go' ! -path './vendor*' ! -path './.git*' ! -path './.vscode*' -exec dirname "{}" \; | sort -u)

.test: $(SOURCE_FILES)
	go test -v $(NO_VENDOR_DIR) && touch $@

.test.tags: $(SOURCE_FILES)
	set -e ; for tag in $(TAGS) ; do go test -tags $$tag -v $(NO_VENDOR_DIR) ; done && touch $@

.PHONY: lint
lint: .lint

CLEAN_FILES += .lint

.lint: $(SOURCE_FILES)
	@if [ "$(findstring $(GO_VER),$(shell go version))" != "" ] ; then \
		set -e ; for dir in $(NO_VENDOR_DIR) ; do golint -set_exit_status $$dir ; done && touch $@ \
	else \
		touch $@ ; \
	fi

.PHONY: vet
vet: .vet .vet.tags

CLEAN_FILES += .vet .vet.tags

.vet: $(SOURCE_FILES)
	go vet $(NO_VENDOR_DIR) && touch $@

.vet.tags: $(SOURCE_FILES)
	set -e ; for tag in $(TAGS) ; do go vet -tags $$tag -v $(NO_VENDOR_DIR) ; done && touch $@

.PHONY: cli.test
cli.test: .cli.test

CLEAN_FILES += .cli.test .cli.test.tags

.cli.test: $(BUILD) $(wildcard ./test/cli/*.sh)
	@go run ./test/cli-test/main.go ./test/cli/*.sh && touch $@

.cli.test.tags: $(BUILD) $(wildcard ./test/cli/*.sh)
	@set -e ; for tag in $(TAGS) ; do go run -tags $$tag ./test/cli-test/main.go ./test/cli/*.sh ; done && touch $@

.PHONY: build
build: $(BUILD)

$(BUILD): $(SOURCE_FILES)
	go build -mod=vendor -o $(BUILD) $(BUILDPATH)

install.tools:
	@go install -u github.com/fatih/color@latest ; \
	go install -u github.com/fzipp/gocyclo/cmd/gocyclo@latest ; \
	go install -u honnef.co/go/tools/cmd/staticcheck@latest ; \
	if [ "$(findstring $(GO_VER),$(shell go version))" != "" ] ; then \
		go get -u golang.org/x/lint/golint ;\
	fi

./bin:
	mkdir -p $@

CLEAN_FILES += bin

build.arches: ./bin
	@set -e ;\
	for pair in $(ARCHES); do \
	p=$$(echo $$pair | cut -d , -f 1);\
	a=$$(echo $$pair | cut -d , -f 2);\
	echo "Building $$p/$$a ...";\
	GOOS=$$p GOARCH=$$a go build -mod=vendor -o ./bin/gomtree.$$p.$$a $(BUILDPATH) ;\
	done

clean:
	rm -rf $(BUILD) $(CLEAN_FILES)