mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	 f83f579dea
			
		
	
	f83f579dea
	
	
	
		
			
			Reviewed-on: https://gitea.com/gitea/tea/pulls/486 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-by: Wim <42wim@noreply.gitea.io> Co-authored-by: 6543 <6543@obermui.de> Co-committed-by: 6543 <6543@obermui.de>
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| DIST := dist
 | |
| export GO111MODULE=on
 | |
| export CGO_ENABLED=0
 | |
| 
 | |
| GO ?= go
 | |
| SHASUM ?= shasum -a 256
 | |
| 
 | |
| export PATH := $($(GO) env GOPATH)/bin:$(PATH)
 | |
| 
 | |
| GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go")
 | |
| GOFMT ?= gofmt -s
 | |
| 
 | |
| ifneq ($(DRONE_TAG),)
 | |
| 	VERSION ?= $(subst v,,$(DRONE_TAG))
 | |
| 	TEA_VERSION ?= $(VERSION)
 | |
| else
 | |
| 	ifneq ($(DRONE_BRANCH),)
 | |
| 		VERSION ?= $(subst release/v,,$(DRONE_BRANCH))
 | |
| 	else
 | |
| 		VERSION ?= master
 | |
| 	endif
 | |
| 	TEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
 | |
| endif
 | |
| TEA_VERSION_TAG ?= $(shell sed 's/+/_/' <<< $(TEA_VERSION))
 | |
| 
 | |
| TAGS ?=
 | |
| SDK ?= $(shell $(GO) list -f '{{.Version}}' -m code.gitea.io/sdk/gitea)
 | |
| LDFLAGS := -X "main.Version=$(TEA_VERSION)" -X "main.Tags=$(TAGS)" -X "main.SDK=$(SDK)" -s -w
 | |
| 
 | |
| # override to allow passing additional goflags via make CLI
 | |
| override GOFLAGS := $(GOFLAGS) -mod=vendor -tags '$(TAGS)' -ldflags '$(LDFLAGS)'
 | |
| 
 | |
| PACKAGES ?= $(shell $(GO) list ./... | grep -v /vendor/)
 | |
| SOURCES ?= $(shell find . -name "*.go" -type f)
 | |
| 
 | |
| # OS specific vars.
 | |
| ifeq ($(OS), Windows_NT)
 | |
| 	EXECUTABLE := tea.exe
 | |
| else
 | |
| 	EXECUTABLE := tea
 | |
| 	ifneq ($(shell uname -s), OpenBSD)
 | |
| 		override BUILDMODE := -buildmode=pie
 | |
| 	endif
 | |
| endif
 | |
| 
 | |
| .PHONY: all
 | |
| all: build
 | |
| 
 | |
| .PHONY: clean
 | |
| clean:
 | |
| 	$(GO) clean -mod=vendor -i ./...
 | |
| 	rm -rf $(EXECUTABLE) $(DIST)
 | |
| 
 | |
| .PHONY: fmt
 | |
| fmt:
 | |
| 	$(GOFMT) -w $(GOFILES)
 | |
| 
 | |
| .PHONY: vet
 | |
| vet:
 | |
| 	# Default vet
 | |
| 	$(GO) vet -mod=vendor $(PACKAGES)
 | |
| 	# Custom vet
 | |
| 	$(GO) build -mod=vendor code.gitea.io/gitea-vet
 | |
| 	$(GO) vet -vettool=gitea-vet $(PACKAGES)
 | |
| 
 | |
| .PHONY: lint
 | |
| lint: install-lint-tools
 | |
| 	revive -config .revive.toml -exclude=./vendor/... ./... || exit 1
 | |
| 
 | |
| .PHONY: misspell-check
 | |
| misspell-check: install-lint-tools
 | |
| 	misspell -error -i unknwon,destory $(GOFILES)
 | |
| 
 | |
| .PHONY: misspell
 | |
| misspell: install-lint-tools
 | |
| 	misspell -w -i unknwon $(GOFILES)
 | |
| 
 | |
| .PHONY: fmt-check
 | |
| fmt-check:
 | |
| 	# get all go files and run go fmt on them
 | |
| 	@diff=$$($(GOFMT) -d $(GOFILES)); \
 | |
| 	if [ -n "$$diff" ]; then \
 | |
| 		echo "Please run 'make fmt' and commit the result:"; \
 | |
| 		echo "$${diff}"; \
 | |
| 		exit 1; \
 | |
| 	fi;
 | |
| 
 | |
| .PHONY: test
 | |
| test:
 | |
| 	$(GO) test -mod=vendor -tags='sqlite sqlite_unlock_notify' $(PACKAGES)
 | |
| 
 | |
| .PHONY: unit-test-coverage
 | |
| unit-test-coverage:
 | |
| 	$(GO) test -mod=vendor -tags='sqlite sqlite_unlock_notify' -cover -coverprofile coverage.out $(PACKAGES) && echo "\n==>\033[32m Ok\033[m\n" || exit 1
 | |
| 
 | |
| .PHONY: vendor
 | |
| vendor:
 | |
| 	$(GO) mod tidy && $(GO) mod vendor
 | |
| 
 | |
| .PHONY: check
 | |
| check: test
 | |
| 
 | |
| .PHONY: install
 | |
| install: $(SOURCES)
 | |
| 	@echo "installing to $(GOPATH)/bin/$(EXECUTABLE)"
 | |
| 	$(GO) install -v $(BUILDMODE) $(GOFLAGS) 
 | |
| 
 | |
| .PHONY: build
 | |
| build: $(EXECUTABLE)
 | |
| 
 | |
| $(EXECUTABLE): $(SOURCES)
 | |
| 	$(GO) build $(BUILDMODE) $(GOFLAGS) -o $@
 | |
| 
 | |
| .PHONY: build-image
 | |
| build-image:
 | |
| 	docker build --build-arg VERSION=$(TEA_VERSION) -t gitea/tea:$(TEA_VERSION_TAG) .
 | |
| 
 | |
| .PHONY: release
 | |
| release: release-dirs install-release-tools release-os release-compress release-check
 | |
| 
 | |
| .PHONY: release-dirs
 | |
| release-dirs:
 | |
| 	mkdir -p $(DIST)/binaries $(DIST)/release
 | |
| 
 | |
| .PHONY: release-os
 | |
| release-os:
 | |
| 	CGO_ENABLED=0 gox -verbose -cgo=false $(GOFLAGS) -osarch='!darwin/386 !darwin/arm' -os="windows linux darwin" -arch="386 amd64 arm arm64" -output="$(DIST)/release/tea-$(VERSION)-{{.OS}}-{{.Arch}}"
 | |
| 
 | |
| .PHONY: release-compress
 | |
| release-compress: install-release-tools
 | |
| 	cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
 | |
| 
 | |
| .PHONY: release-check
 | |
| release-check: install-release-tools
 | |
| 	cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "checksumming $${file}" && $(SHASUM) `echo $${file} | sed 's/^..//'` > $${file}.sha256; done;
 | |
| 
 | |
| ### tools
 | |
| install-release-tools:
 | |
| 	@hash gox > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 | |
| 		$(GO) install github.com/mitchellh/gox@latest; \
 | |
| 	fi
 | |
| 	@hash gxz > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 | |
| 		$(GO) install github.com/ulikunitz/xz/cmd/gxz@latest; \
 | |
| 	fi
 | |
| 
 | |
| install-lint-tools:
 | |
| 	@hash revive > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 | |
| 		$(GO) install github.com/mgechev/revive@latest; \
 | |
| 	fi
 | |
| 	@hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 | |
| 		$(GO) install github.com/client9/misspell/cmd/misspell@latest; \
 | |
| 	fi
 |