From 49d5e7da42fef8fd1e0a5d98fec578effcc2fa47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 16 Oct 2017 10:16:58 +0200 Subject: Use Make for the release for now [ci skip] --- .circleci/config.yml | 4 +-- Makefile | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/.circleci/config.yml b/.circleci/config.yml index d64197563..b7d958e14 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -14,8 +14,8 @@ jobs: command: | git clone git@github.com:gohugoio/hugoDocs.git cd hugo - mage vendor - mage check + make vendor + make check - persist_to_workspace: root: . paths: . diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..0518967ce --- /dev/null +++ b/Makefile @@ -0,0 +1,86 @@ +# A Self-Documenting Makefile: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html + +PACKAGE = github.com/gohugoio/hugo +COMMIT_HASH = `git rev-parse --short HEAD 2>/dev/null` +BUILD_DATE = `date +%FT%T%z` +LDFLAGS = -ldflags "-X ${PACKAGE}/hugolib.CommitHash=${COMMIT_HASH} -X ${PACKAGE}/hugolib.BuildDate=${BUILD_DATE}" +NOGI_LDFLAGS = -ldflags "-X ${PACKAGE}/hugolib.BuildDate=${BUILD_DATE}" + +# allow user to override go executable by running as GOEXE=xxx make ... on unix-like systems +GOEXE ?= go + +.PHONY: vendor docker check fmt lint test test-race vet test-cover-html help +.DEFAULT_GOAL := help + +vendor: ## Install govendor and sync Hugo's vendored dependencies + ${GOEXE} get github.com/kardianos/govendor + govendor sync ${PACKAGE} + +hugo: vendor ## Build hugo binary + ${GOEXE} build ${LDFLAGS} ${PACKAGE} + +hugo-race: vendor ## Build hugo binary with race detector enabled + ${GOEXE} build -race ${LDFLAGS} ${PACKAGE} + +install: vendor ## Install hugo binary + ${GOEXE} install ${LDFLAGS} ${PACKAGE} + +hugo-no-gitinfo: LDFLAGS = ${NOGI_LDFLAGS} +hugo-no-gitinfo: vendor hugo ## Build hugo without git info + +docker: ## Build hugo Docker container + docker build -t hugo . + docker rm -f hugo-build || true + docker run --name hugo-build hugo ls /go/bin + docker cp hugo-build:/go/bin/hugo . + docker rm hugo-build + +govendor: vendor # Deprecated: use "vendor" target +get: vendor # Deprecated: use "vendor" +gitinfo: hugo # Deprecated: use "hugo" target +install-gitinfo: install # Deprecated: use "install" target +no-git-info: hugo-no-gitinfo # Deprecated: use "hugo-no-gitinfo" target + +check: test-race test386 fmt vet ## Run tests and linters + +test386: ## Run tests in 32-bit mode + GOARCH=386 govendor test +local + +test: ## Run tests + govendor test +local + +test-race: ## Run tests with race detector + govendor test -race +local + +fmt: ## Run gofmt linter + @for d in `govendor list -no-status +local | sed 's/github.com.gohugoio.hugo/./'` ; do \ + if [ "`gofmt -l $$d/*.go | tee /dev/stderr`" ]; then \ + echo "^ improperly formatted go files" && echo && exit 1; \ + fi \ + done + +lint: ## Run golint linter + @for d in `govendor list -no-status +local | sed 's/github.com.gohugoio.hugo/./'` ; do \ + if [ "`golint $$d | tee /dev/stderr`" ]; then \ + echo "^ golint errors!" && echo && exit 1; \ + fi \ + done + +vet: ## Run go vet linter + @if [ "`govendor vet +local | tee /dev/stderr`" ]; then \ + echo "^ go vet errors!" && echo && exit 1; \ + fi + +test-cover-html: PACKAGES = $(shell govendor list -no-status +local | sed 's/github.com.gohugoio.hugo/./') +test-cover-html: ## Generate test coverage report + echo "mode: count" > coverage-all.out + $(foreach pkg,$(PACKAGES),\ + govendor test -coverprofile=coverage.out -covermode=count $(pkg);\ + tail -n +2 coverage.out >> coverage-all.out;) + ${GOEXE} tool cover -html=coverage-all.out + +check-vendor: ## Verify that vendored packages match git HEAD + @git diff-index --quiet HEAD vendor/ || (echo "check-vendor target failed: vendored packages out of sync" && echo && git diff vendor/ && exit 1) + +help: + @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -- cgit v1.2.3