summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-10-16 10:16:58 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-10-16 10:22:39 +0200
commit49d5e7da42fef8fd1e0a5d98fec578effcc2fa47 (patch)
treec943fdfac98fb308c5e8861ee6ffc3059565faac
parent190508ae1e97a579919216ca9d7d8179d74e5a77 (diff)
Use Make for the release for now
[ci skip]
-rw-r--r--.circleci/config.yml4
-rw-r--r--Makefile86
2 files changed, 88 insertions, 2 deletions
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}'