-
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added basic makefiles for go package
- Loading branch information
Showing
4 changed files
with
182 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,3 +13,6 @@ | |
|
||
# Dependency directories (remove the comment below to include it) | ||
# vendor/ | ||
|
||
# JetBeans | ||
.idea |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
## Default repository domain name | ||
ifndef GIT_DOMAIN | ||
override GIT_DOMAIN=github.com | ||
endif | ||
|
||
## Set if defined (alias variable for ease of use) | ||
ifdef branch | ||
override REPO_BRANCH=$(branch) | ||
export REPO_BRANCH | ||
endif | ||
|
||
## Do we have git available? | ||
HAS_GIT := $(shell command -v git 2> /dev/null) | ||
|
||
ifdef HAS_GIT | ||
## Do we have a repo? | ||
HAS_REPO := $(shell git rev-parse --is-inside-work-tree 2> /dev/null) | ||
ifdef HAS_REPO | ||
## Automatically detect the repo owner and repo name (for local use with Git) | ||
REPO_NAME=$(shell basename "$(shell git rev-parse --show-toplevel 2> /dev/null)") | ||
REPO_OWNER=$(shell git config --get remote.origin.url | sed 's/git@$(GIT_DOMAIN)://g' | sed 's/\/$(REPO_NAME).git//g') | ||
VERSION_SHORT=$(shell git describe --tags --always --abbrev=0) | ||
export REPO_NAME, REPO_OWNER, VERSION_SHORT | ||
endif | ||
endif | ||
|
||
## Set the distribution folder | ||
ifndef DISTRIBUTIONS_DIR | ||
override DISTRIBUTIONS_DIR=./dist | ||
endif | ||
export DISTRIBUTIONS_DIR | ||
|
||
help: ## Show this help message | ||
@egrep -h '^(.+)\:\ ##\ (.+)' ${MAKEFILE_LIST} | column -t -c 2 -s ':#' | ||
|
||
release:: ## Full production release (creates release in Github) | ||
@test $(github_token) | ||
@export GITHUB_TOKEN=$(github_token) && goreleaser --rm-dist | ||
|
||
release-test: ## Full production test release (everything except deploy) | ||
@goreleaser --skip-publish --rm-dist | ||
|
||
release-snap: ## Test the full release (build binaries) | ||
@goreleaser --snapshot --skip-publish --rm-dist | ||
|
||
replace-version: ## Replaces the version in HTML/JS (pre-deploy) | ||
@test $(version) | ||
@test "$(path)" | ||
@find $(path) -name "*.html" -type f -exec sed -i '' -e "s/{{version}}/$(version)/g" {} \; | ||
@find $(path) -name "*.js" -type f -exec sed -i '' -e "s/{{version}}/$(version)/g" {} \; | ||
|
||
tag: ## Generate a new tag and push (tag version=0.0.0) | ||
@test $(version) | ||
@git tag -a v$(version) -m "Pending full release..." | ||
@git push origin v$(version) | ||
@git fetch --tags -f | ||
|
||
tag-remove: ## Remove a tag if found (tag-remove version=0.0.0) | ||
@test $(version) | ||
@git tag -d v$(version) | ||
@git push --delete origin v$(version) | ||
@git fetch --tags | ||
|
||
tag-update: ## Update an existing tag to current commit (tag-update version=0.0.0) | ||
@test $(version) | ||
@git push --force origin HEAD:refs/tags/v$(version) | ||
@git fetch --tags -f | ||
|
||
update-releaser: ## Update the goreleaser application | ||
@brew update | ||
@brew upgrade goreleaser |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
## Default to the repo name if empty | ||
ifndef BINARY_NAME | ||
override BINARY_NAME=app | ||
endif | ||
|
||
## Define the binary name | ||
ifdef CUSTOM_BINARY_NAME | ||
override BINARY_NAME=$(CUSTOM_BINARY_NAME) | ||
endif | ||
|
||
## Set the binary release names | ||
DARWIN=$(BINARY_NAME)-darwin | ||
LINUX=$(BINARY_NAME)-linux | ||
WINDOWS=$(BINARY_NAME)-windows.exe | ||
|
||
.PHONY: test lint install | ||
|
||
bench: ## Run all benchmarks in the Go application | ||
@go test -bench=. -benchmem | ||
|
||
build-go: ## Build the Go application (locally) | ||
@go build -o bin/$(BINARY_NAME) | ||
|
||
clean-mods: ## Remove all the Go mod cache | ||
@go clean -modcache | ||
|
||
coverage: ## Shows the test coverage | ||
@go test -coverprofile=coverage.out ./... && go tool cover -func=coverage.out | ||
|
||
godocs: ## Sync the latest tag with GoDocs | ||
@test $(GIT_DOMAIN) | ||
@test $(REPO_OWNER) | ||
@test $(REPO_NAME) | ||
@test $(VERSION_SHORT) | ||
@curl https://proxy.golang.org/$(GIT_DOMAIN)/$(REPO_OWNER)/$(REPO_NAME)/@v/$(VERSION_SHORT).info | ||
|
||
install: ## Install the application | ||
@go build -o $$GOPATH/bin/$(BINARY_NAME) | ||
|
||
install-go: ## Install the application (Using Native Go) | ||
@go install $(GIT_DOMAIN)/$(REPO_OWNER)/$(REPO_NAME) | ||
|
||
lint: ## Run the Go lint application | ||
@if [ "$(shell command -v golint)" = "" ]; then go get -u golang.org/x/lint/golint; fi | ||
@golint | ||
|
||
test: ## Runs vet, lint and ALL tests | ||
@$(MAKE) vet | ||
@$(MAKE) lint | ||
@go test ./... -v | ||
|
||
test-short: ## Runs vet, lint and tests (excludes integration tests) | ||
@$(MAKE) vet | ||
@$(MAKE) lint | ||
@go test ./... -v -test.short | ||
|
||
test-travis: ## Runs all tests via Travis (also exports coverage) | ||
@$(MAKE) vet | ||
@$(MAKE) lint | ||
@go test ./... -race -coverprofile=coverage.txt -covermode=atomic | ||
|
||
test-travis-short: ## Runs unit tests via Travis (also exports coverage) | ||
@$(MAKE) vet | ||
@$(MAKE) lint | ||
@go test ./... -test.short -race -coverprofile=coverage.txt -covermode=atomic | ||
|
||
uninstall: ## Uninstall the application (and remove files) | ||
@test $(BINARY_NAME) | ||
@test $(GIT_DOMAIN) | ||
@test $(REPO_OWNER) | ||
@test $(REPO_NAME) | ||
@go clean -i $(GIT_DOMAIN)/$(REPO_OWNER)/$(REPO_NAME) | ||
@rm -rf $$GOPATH/src/$(GIT_DOMAIN)/$(REPO_OWNER)/$(REPO_NAME) | ||
@rm -rf $$GOPATH/bin/$(BINARY_NAME) | ||
|
||
update: ## Update all project dependencies | ||
@go get -u ./... && go mod tidy | ||
|
||
vet: ## Run the Go vet application | ||
@go vet -v ./... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Common makefile commands & variables between projects | ||
include .make/Makefile.common | ||
|
||
# Common Golang makefile commands & variables between projects | ||
include .make/Makefile.go | ||
|
||
## Not defined? Use default repo name which is the application | ||
ifeq ($(REPO_NAME),) | ||
REPO_NAME="go-bitcoin" | ||
endif | ||
|
||
## Not defined? Use default repo owner | ||
ifeq ($(REPO_OWNER),) | ||
REPO_OWNER="rohenaz" | ||
endif | ||
|
||
.PHONY: clean | ||
|
||
all: ## Runs multiple commands | ||
@$(MAKE) test | ||
|
||
clean: ## Remove previous builds and any test cache data | ||
@go clean -cache -testcache -i -r | ||
@test $(DISTRIBUTIONS_DIR) | ||
@if [ -d $(DISTRIBUTIONS_DIR) ]; then rm -r $(DISTRIBUTIONS_DIR); fi | ||
|
||
release:: ## Runs common.release then runs godocs | ||
@$(MAKE) godocs |