feat: new project layout
This commit is contained in:
		
							
								
								
									
										15
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | # Auto detect text files and perform LF normalization | ||||||
|  | * text=auto | ||||||
|  |  | ||||||
|  | # Collapse vendored and generated files on GitHub | ||||||
|  | vendor/* linguist-vendored | ||||||
|  | rules.mk linguist-vendored | ||||||
|  | */vendor/* linguist-vendored | ||||||
|  | *.gen.* linguist-generated | ||||||
|  | *.pb.go linguist-generated | ||||||
|  | go.sum linguist-generated | ||||||
|  | go.mod linguist-generated | ||||||
|  | gen.sum linguist-generated | ||||||
|  |  | ||||||
|  | # Reduce conflicts on markdown files | ||||||
|  | *.md merge=union | ||||||
							
								
								
									
										45
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,28 +1,25 @@ | |||||||
| vendor/**/.travis.yml | # Temporary files | ||||||
|  | *~ | ||||||
|  | *# | ||||||
|  | .#* | ||||||
|  | coverage.txt | ||||||
|  |  | ||||||
| /protoc-gen-gotemplate | # Vendors | ||||||
|  | package-lock.json | ||||||
| # Compiled Object files, Static and Dynamic libs (Shared Objects) | node_modules/ | ||||||
| *.o | vendor/ | ||||||
| *.a |  | ||||||
| *.so |  | ||||||
|  |  | ||||||
| # Folders |  | ||||||
| _obj |  | ||||||
| _test |  | ||||||
|  |  | ||||||
| # Architecture specific extensions/prefixes |  | ||||||
| *.[568vq] |  | ||||||
| [568vq].out |  | ||||||
|  |  | ||||||
| *.cgo1.go |  | ||||||
| *.cgo2.c |  | ||||||
| _cgo_defun.c |  | ||||||
| _cgo_gotypes.go |  | ||||||
| _cgo_export.* |  | ||||||
|  |  | ||||||
| _testmain.go |  | ||||||
|  |  | ||||||
|  | # Binaries for programs and plugins | ||||||
|  | dist/ | ||||||
|  | gin-bin | ||||||
| *.exe | *.exe | ||||||
|  | *.exe~ | ||||||
|  | *.dll | ||||||
|  | *.so | ||||||
|  | *.dylib | ||||||
|  |  | ||||||
|  | # Test binary, build with `go test -c` | ||||||
| *.test | *.test | ||||||
| *.prof |  | ||||||
|  | # Output of the go coverage tool, specifically when used with LiteIDE | ||||||
|  | *.out | ||||||
|   | |||||||
							
								
								
									
										28
									
								
								AUTHORS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								AUTHORS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | # This file lists all individuals having contributed content to the repository. | ||||||
|  | # For how it is generated, see 'https://github.com/moul/rules.mk' | ||||||
|  |  | ||||||
|  | Alexandre Beslic <abeslic@abronan.com> | ||||||
|  | Anastasia DERUELLE <anastasia.deruelle@gmail.com> | ||||||
|  | Gero <geronimo@eclypsium.com> | ||||||
|  | gfanton <guilhem.fanton@gmail.com> | ||||||
|  | Guilhem Fanton <guilhem.fanton@gmail.com> | ||||||
|  | Jan Weitz <jan@iosphere.de> | ||||||
|  | jhayotte <julien.hayotte@gmail.com> | ||||||
|  | Julien Hayotte <julien.hayotte@gmail.com> | ||||||
|  | Manfred Touron <m@42.am> | ||||||
|  | Mathieu Acthernoene <zoontek@gmail.com> | ||||||
|  | Mike Lee <mike.lee@safeguardproperties.com> | ||||||
|  | moul-bot <41326314+moul-bot@users.noreply.github.com> | ||||||
|  | Pat Moroney <pat@pat.email> | ||||||
|  | Pat Moroney <pmoroney@name.com> | ||||||
|  | Peter Monko <piotrek.monko@gmail.com> | ||||||
|  | Pierre Roullon <pierre.roullon@gmail.com> | ||||||
|  | Quentin Perez <qperez@ocs.online.net> | ||||||
|  | Renovate Bot <bot@renovateapp.com> | ||||||
|  | Sacha Froment <sfroment42@gmail.com> | ||||||
|  | Shogo Iwano <shiwano@gmail.com> | ||||||
|  | Thomas KERAMBLOCH <tkerambloch@vente-privee.com> | ||||||
|  | Tommy PAGEARD <tpageard@vente-privee.com> | ||||||
|  | Valerio Gheri <valerio.gheri@gmail.com> | ||||||
|  | Victor Login <batazor111@gmail.com> | ||||||
|  | webii <michal.jaglewicz@gmail.com> | ||||||
							
								
								
									
										30
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,14 +1,14 @@ | |||||||
| .PHONY: build | GOPKG ?= moul.io/protoc-gen-gotemplate | ||||||
| build: | DOCKER_IMAGE ?= moul/golang-repo-template | ||||||
| 	go build -v -i -o protoc-gen-gotemplate . | GOBINS ?= . ./cmd/web-editor | ||||||
|  | GOLIBS ?= . | ||||||
|  |  | ||||||
| .PHONY: install | all: test install | ||||||
| install: |  | ||||||
| 	go install . |  | ||||||
| 	go install ./cmd/web-editor |  | ||||||
|  |  | ||||||
| .PHONY: test | include rules.mk | ||||||
| test:	install |  | ||||||
|  | .PHONY: examples | ||||||
|  | examples:	install | ||||||
| 	cd examples/time && make | 	cd examples/time && make | ||||||
| 	cd examples/enum && make | 	cd examples/enum && make | ||||||
| 	cd examples/import && make | 	cd examples/import && make | ||||||
| @@ -22,15 +22,3 @@ test:	install | |||||||
| 	cd examples/helpers && make | 	cd examples/helpers && make | ||||||
| 	cd examples/arithmetics && make | 	cd examples/arithmetics && make | ||||||
|   #cd examples/go-kit && make |   #cd examples/go-kit && make | ||||||
|  |  | ||||||
| .PHONY: docker.build |  | ||||||
| docker.build: |  | ||||||
| 	docker build --pull -t moul/protoc-gen-gotemplate . |  | ||||||
|  |  | ||||||
| .PHONY: docker.push |  | ||||||
| docker.push: docker.build |  | ||||||
| 	docker push moul/protoc-gen-gotemplate |  | ||||||
|  |  | ||||||
| .PHONY: lint |  | ||||||
| lint: |  | ||||||
| 	golangci-lint run --verbose . ./helpers ./cmd/... |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
										generated
									
									
									
								
							| @@ -19,3 +19,5 @@ require ( | |||||||
| 	google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48 | 	google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48 | ||||||
| 	gopkg.in/yaml.v2 v2.2.2 // indirect | 	gopkg.in/yaml.v2 v2.2.2 // indirect | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | go 1.13 | ||||||
|   | |||||||
| @@ -1,6 +0,0 @@ | |||||||
| { |  | ||||||
|   "extends": [ |  | ||||||
|     "config:base" |  | ||||||
|   ], |  | ||||||
|   "groupName": "all" |  | ||||||
| } |  | ||||||
							
								
								
									
										270
									
								
								rules.mk
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										270
									
								
								rules.mk
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,270 @@ | |||||||
|  | # +--------------------------------------------------------------+ | ||||||
|  | # | * * *                moul.io/rules.mk                        | | ||||||
|  | # +--------------------------------------------------------------+ | ||||||
|  | # |                                                              | | ||||||
|  | # |     ++              ______________________________________   | | ||||||
|  | # |     ++++           /                                      \  | | ||||||
|  | # |      ++++          |                                      |  | | ||||||
|  | # |    ++++++++++      |   https://moul.io/rules.mk is a set  |  | | ||||||
|  | # |   +++       |      |   of common Makefile rules that can  |  | | ||||||
|  | # |   ++         |     |   be configured from the Makefile    |  | | ||||||
|  | # |   +  -==   ==|     |   or with environment variables.     |  | | ||||||
|  | # |  (   <*>   <*>     |                                      |  | | ||||||
|  | # |   |          |    /|                      Manfred Touron  |  | | ||||||
|  | # |   |         _)   / |                        manfred.life  |  | | ||||||
|  | # |   |      +++    /  \______________________________________/  | | ||||||
|  | # |    \      =+   /                                             | | ||||||
|  | # |     \      +                                                 | | ||||||
|  | # |     |\++++++                                                 | | ||||||
|  | # |     |  ++++      ||//                                        | | ||||||
|  | # |  ___|   |___    _||/__                                     __| | ||||||
|  | # | /    ---    \   \|  |||                   __ _  ___  __ __/ /| | ||||||
|  | # |/  |       |  \    \ /                    /  ' \/ _ \/ // / / | | ||||||
|  | # ||  |       |  |    | |                   /_/_/_/\___/\_,_/_/  | | ||||||
|  | # +--------------------------------------------------------------+ | ||||||
|  |  | ||||||
|  | all: help | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## Common helpers | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## rules.mk | ||||||
|  | ## | ||||||
|  | ifneq ($(wildcard rules.mk),) | ||||||
|  | .PHONY: rulesmk.bumpdeps | ||||||
|  | rulesmk.bumpdeps: | ||||||
|  | 	wget -O rules.mk https://raw.githubusercontent.com/moul/rules.mk/master/rules.mk | ||||||
|  | BUMPDEPS_STEPS += rulesmk.bumpdeps | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## Maintainer | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | ifneq ($(wildcard .git/HEAD),) | ||||||
|  | .PHONY: generate.authors | ||||||
|  | generate.authors: AUTHORS | ||||||
|  | AUTHORS: .git/ | ||||||
|  | 	echo "# This file lists all individuals having contributed content to the repository." > AUTHORS | ||||||
|  | 	echo "# For how it is generated, see 'https://github.com/moul/rules.mk'" >> AUTHORS | ||||||
|  | 	echo >> AUTHORS | ||||||
|  | 	git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf >> AUTHORS | ||||||
|  | GENERATE_STEPS += generate.authors | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## Golang | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | ifndef GOPKG | ||||||
|  | ifneq ($(wildcard go.mod),) | ||||||
|  | GOPKG = $(shell sed '/module/!d;s/^omdule\ //' go.mod) | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  | ifdef GOPKG | ||||||
|  | GO ?= go | ||||||
|  | GOPATH ?= $(HOME)/go | ||||||
|  | GOLIBS ?= $(shell find . -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq) | ||||||
|  | GO_INSTALL_OPTS ?= | ||||||
|  | GO_TEST_OPTS ?= -test.timeout=30s | ||||||
|  |  | ||||||
|  | ifdef GOBINS | ||||||
|  | .PHONY: go.install | ||||||
|  | go.install: | ||||||
|  | 	@set -e; for dir in $(GOBINS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  $(GO) install $(GO_INSTALL_OPTS) .; \ | ||||||
|  | 	); done | ||||||
|  | INSTALL_STEPS += go.install | ||||||
|  |  | ||||||
|  | .PHONY: go.release | ||||||
|  | go.release: | ||||||
|  | 	goreleaser --snapshot --skip-publish --rm-dist | ||||||
|  | 	@echo -n "Do you want to release? [y/N] " && read ans && \ | ||||||
|  | 	  if [ $${ans:-N} = y ]; then set -xe; goreleaser --rm-dist; fi | ||||||
|  | RELEASE_STEPS += go.release | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | .PHONY: go.unittest coverage.txt | ||||||
|  | go.unittest: coverage.txt | ||||||
|  | coverage.txt: | ||||||
|  | 	@rm -f /tmp/coverage.txt | ||||||
|  | 	@touch /tmp/coverage.txt | ||||||
|  | 	@set -e; for dir in $(GOLIBS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  $(GO) test $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race ./...; \ | ||||||
|  | 	  if [ -f /tmp/profile.out ]; then \ | ||||||
|  | 	    cat /tmp/profile.out >> /tmp/coverage.txt; \ | ||||||
|  | 	    rm -f /tmp/profile.out; \ | ||||||
|  | 	  fi); done | ||||||
|  | 	mv /tmp/coverage.txt . | ||||||
|  |  | ||||||
|  | .PHONY: go.coverfunc | ||||||
|  | go.coverfunc: coverage.txt | ||||||
|  | 	go tool cover -func=./coverage.txt | grep -v .pb.go: | grep -v .pb.gw.go: | ||||||
|  |  | ||||||
|  | .PHONY: go.lint | ||||||
|  | go.lint: | ||||||
|  | 	@set -e; for dir in $(GOLIBS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  golangci-lint run --verbose ./...; \ | ||||||
|  | 	); done | ||||||
|  |  | ||||||
|  | .PHONY: go.tidy | ||||||
|  | go.tidy: | ||||||
|  | 	@set -e; for dir in $(GOLIBS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  $(GO)	mod tidy; \ | ||||||
|  | 	); done | ||||||
|  |  | ||||||
|  | .PHONY: go.build | ||||||
|  | go.build: | ||||||
|  | 	@set -e; for dir in $(GOLIBS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  $(GO)	build ./...; \ | ||||||
|  | 	); done | ||||||
|  |  | ||||||
|  | .PHONY: go.bump-deps | ||||||
|  | go.bumpdeps: | ||||||
|  | 	@set -e; for dir in $(GOLIBS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  $(GO)	get -u ./...; \ | ||||||
|  | 	); done | ||||||
|  |  | ||||||
|  | .PHONY: go.bump-deps | ||||||
|  | go.fmt: | ||||||
|  | 	if ! command -v goimports &>/dev/null; then GO111MODULE=off go get golang.org/x/tools/cmd/goimports; fi | ||||||
|  | 	@set -e; for dir in $(GOLIBS); do ( set -xe; \ | ||||||
|  | 	  cd $$dir; \ | ||||||
|  | 	  goimports -w . \ | ||||||
|  | 	); done | ||||||
|  |  | ||||||
|  | BUILD_STEPS += go.build | ||||||
|  | BUMPDEPS_STEPS += go.bumpdeps | ||||||
|  | TIDY_STEPS += go.tidy | ||||||
|  | LINT_STEPS += go.lint | ||||||
|  | UNITTEST_STEPS += go.unittest | ||||||
|  | FMT_STEPS += go.fmt | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## Node | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | ifndef NPM_PACKAGES | ||||||
|  | ifneq ($(wildcard package.json),) | ||||||
|  | NPM_PACKAGES = . | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  | ifdef NPM_PACKAGES | ||||||
|  | .PHONY: npm.publish | ||||||
|  | npm.publish: | ||||||
|  | 	@echo -n "Do you want to npm publish? [y/N] " && read ans && \ | ||||||
|  | 	@if [ $${ans:-N} = y ]; then \ | ||||||
|  | 	  set -e; for dir in $(NPM_PACKAGES); do ( set -xe; \ | ||||||
|  | 	    cd $$dir; \ | ||||||
|  | 	    npm publish --access=public; \ | ||||||
|  | 	  ); done; \ | ||||||
|  | 	fi | ||||||
|  | RELEASE_STEPS += npm.publish | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## Docker | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | ifndef DOCKER_IMAGE | ||||||
|  | ifneq ($(wildcard Dockerfile),) | ||||||
|  | DOCKER_IMAGE = $(notdir $(PWD)) | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  | ifdef DOCKER_IMAGE | ||||||
|  | ifneq ($(DOCKER_IMAGE),none) | ||||||
|  | .PHONY: docker.build | ||||||
|  | docker.build: | ||||||
|  | 	docker build \ | ||||||
|  | 	  --build-arg VCS_REF=`git rev-parse --short HEAD` \ | ||||||
|  | 	  --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ | ||||||
|  | 	  --build-arg VERSION=`git describe --tags --always` \ | ||||||
|  | 	  -t $(DOCKER_IMAGE) . | ||||||
|  |  | ||||||
|  | BUILD_STEPS += docker.build | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ## Common | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | TEST_STEPS += $(UNITTEST_STEPS) | ||||||
|  | TEST_STEPS += $(LINT_STEPS) | ||||||
|  | TEST_STEPS += $(TIDY_STEPS) | ||||||
|  |  | ||||||
|  | ifneq ($(strip $(TEST_STEPS)),) | ||||||
|  | .PHONY: test | ||||||
|  | test: $(PRE_TEST_STEPS) $(TEST_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef INSTALL_STEPS | ||||||
|  | .PHONY: install | ||||||
|  | install: $(PRE_INSTALL_STEPS) $(INSTALL_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef UNITTEST_STEPS | ||||||
|  | .PHONY: unittest | ||||||
|  | unittest: $(PRE_UNITTEST_STEPS) $(UNITTEST_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef LINT_STEPS | ||||||
|  | .PHONY: lint | ||||||
|  | lint: $(PRE_LINT_STEPS) $(FMT_STEPS) $(LINT_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef TIDY_STEPS | ||||||
|  | .PHONY: tidy | ||||||
|  | tidy: $(PRE_TIDY_STEPS) $(TIDY_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef BUILD_STEPS | ||||||
|  | .PHONY: build | ||||||
|  | build: $(PRE_BUILD_STEPS) $(BUILD_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef RELEASE_STEPS | ||||||
|  | .PHONY: release | ||||||
|  | release: $(PRE_RELEASE_STEPS) $(RELEASE_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef BUMPDEPS_STEPS | ||||||
|  | .PHONY: bumpdeps | ||||||
|  | bumpdeps: $(PRE_BUMDEPS_STEPS) $(BUMPDEPS_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef FMT_STEPS | ||||||
|  | .PHONY: fmt | ||||||
|  | fmt: $(PRE_FMT_STEPS) $(FMT_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifdef GENERATE_STEPS | ||||||
|  | .PHONY: generate | ||||||
|  | generate: $(PRE_GENERATE_STEPS) $(GENERATE_STEPS) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | .PHONY: help | ||||||
|  | help: | ||||||
|  | 	@echo "General commands:" | ||||||
|  | 	@[ "$(BUILD_STEPS)" != "" ]     && echo "  build"     || true | ||||||
|  | 	@[ "$(BUMPDEPS_STEPS)" != "" ]  && echo "  bumpdeps"  || true | ||||||
|  | 	@[ "$(FMT_STEPS)" != "" ]       && echo "  fmt"       || true | ||||||
|  | 	@[ "$(GENERATE_STEPS)" != "" ]  && echo "  generate"  || true | ||||||
|  | 	@[ "$(INSTALL_STEPS)" != "" ]   && echo "  install"   || true | ||||||
|  | 	@[ "$(LINT_STEPS)" != "" ]      && echo "  lint"      || true | ||||||
|  | 	@[ "$(RELEASE_STEPS)" != "" ]   && echo "  release"   || true | ||||||
|  | 	@[ "$(TEST_STEPS)" != "" ]      && echo "  test"      || true | ||||||
|  | 	@[ "$(TIDY_STEPS)" != "" ]      && echo "  tidy"      || true | ||||||
|  | 	@[ "$(UNITTEST_STEPS)" != "" ]  && echo "  unittest"  || true | ||||||
|  | 	@# FIXME: list other commands | ||||||
		Reference in New Issue
	
	Block a user