mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# TODO: Fix this on windows.
 | 
						|
ALL_SRC := $(shell find . -name '*.go' \
 | 
						|
								-not -path './vendor/*' \
 | 
						|
								-not -path '*/gen-go/*' \
 | 
						|
								-type f | sort)
 | 
						|
ALL_PKGS := $(shell go list $(sort $(dir $(ALL_SRC))))
 | 
						|
 | 
						|
GOTEST_OPT?=-v -race -timeout 30s
 | 
						|
GOTEST_OPT_WITH_COVERAGE = $(GOTEST_OPT) -coverprofile=coverage.txt -covermode=atomic
 | 
						|
GOTEST=go test
 | 
						|
GOFMT=gofmt
 | 
						|
GOLINT=golint
 | 
						|
GOVET=go vet
 | 
						|
EMBEDMD=embedmd
 | 
						|
# TODO decide if we need to change these names.
 | 
						|
TRACE_ID_LINT_EXCEPTION="type name will be used as trace.TraceID by other packages"
 | 
						|
TRACE_OPTION_LINT_EXCEPTION="type name will be used as trace.TraceOptions by other packages"
 | 
						|
README_FILES := $(shell find . -name '*README.md' | sort | tr '\n' ' ')
 | 
						|
 | 
						|
.DEFAULT_GOAL := fmt-lint-vet-embedmd-test
 | 
						|
 | 
						|
.PHONY: fmt-lint-vet-embedmd-test
 | 
						|
fmt-lint-vet-embedmd-test: fmt lint vet embedmd test
 | 
						|
 | 
						|
# TODO enable test-with-coverage in tavis
 | 
						|
.PHONY: travis-ci
 | 
						|
travis-ci: fmt lint vet embedmd test test-386
 | 
						|
 | 
						|
all-pkgs:
 | 
						|
	@echo $(ALL_PKGS) | tr ' ' '\n' | sort
 | 
						|
 | 
						|
all-srcs:
 | 
						|
	@echo $(ALL_SRC) | tr ' ' '\n' | sort
 | 
						|
 | 
						|
.PHONY: test
 | 
						|
test:
 | 
						|
	$(GOTEST) $(GOTEST_OPT) $(ALL_PKGS)
 | 
						|
 | 
						|
.PHONY: test-386
 | 
						|
test-386:
 | 
						|
	GOARCH=386 $(GOTEST) -v -timeout 30s $(ALL_PKGS)
 | 
						|
 | 
						|
.PHONY: test-with-coverage
 | 
						|
test-with-coverage:
 | 
						|
	$(GOTEST) $(GOTEST_OPT_WITH_COVERAGE) $(ALL_PKGS)
 | 
						|
 | 
						|
.PHONY: fmt
 | 
						|
fmt:
 | 
						|
	@FMTOUT=`$(GOFMT) -s -l $(ALL_SRC) 2>&1`; \
 | 
						|
	if [ "$$FMTOUT" ]; then \
 | 
						|
		echo "$(GOFMT) FAILED => gofmt the following files:\n"; \
 | 
						|
		echo "$$FMTOUT\n"; \
 | 
						|
		exit 1; \
 | 
						|
	else \
 | 
						|
	    echo "Fmt finished successfully"; \
 | 
						|
	fi
 | 
						|
 | 
						|
.PHONY: lint
 | 
						|
lint:
 | 
						|
	@LINTOUT=`$(GOLINT) $(ALL_PKGS) | grep -v $(TRACE_ID_LINT_EXCEPTION) | grep -v $(TRACE_OPTION_LINT_EXCEPTION) 2>&1`; \
 | 
						|
	if [ "$$LINTOUT" ]; then \
 | 
						|
		echo "$(GOLINT) FAILED => clean the following lint errors:\n"; \
 | 
						|
		echo "$$LINTOUT\n"; \
 | 
						|
		exit 1; \
 | 
						|
	else \
 | 
						|
	    echo "Lint finished successfully"; \
 | 
						|
	fi
 | 
						|
 | 
						|
.PHONY: vet
 | 
						|
vet:
 | 
						|
    # TODO: Understand why go vet downloads "github.com/google/go-cmp v0.2.0"
 | 
						|
	@VETOUT=`$(GOVET) ./... | grep -v "go: downloading" 2>&1`; \
 | 
						|
	if [ "$$VETOUT" ]; then \
 | 
						|
		echo "$(GOVET) FAILED => go vet the following files:\n"; \
 | 
						|
		echo "$$VETOUT\n"; \
 | 
						|
		exit 1; \
 | 
						|
	else \
 | 
						|
	    echo "Vet finished successfully"; \
 | 
						|
	fi
 | 
						|
	
 | 
						|
.PHONY: embedmd
 | 
						|
embedmd:
 | 
						|
	@EMBEDMDOUT=`$(EMBEDMD) -d $(README_FILES) 2>&1`; \
 | 
						|
	if [ "$$EMBEDMDOUT" ]; then \
 | 
						|
		echo "$(EMBEDMD) FAILED => embedmd the following files:\n"; \
 | 
						|
		echo "$$EMBEDMDOUT\n"; \
 | 
						|
		exit 1; \
 | 
						|
	else \
 | 
						|
	    echo "Embedmd finished successfully"; \
 | 
						|
	fi
 | 
						|
 | 
						|
.PHONY: install-tools
 | 
						|
install-tools:
 | 
						|
	go get -u golang.org/x/tools/cmd/cover
 | 
						|
	go get -u golang.org/x/lint/golint
 | 
						|
	go get -u github.com/rakyll/embedmd
 |