Skip to content

Commit b80f36e

Browse files
committed
update module name
1 parent 8decccb commit b80f36e

39 files changed

+2037
-602
lines changed

.gitignore

-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
*.out
1313
vendor
1414
bin/
15-
docs/
1615
release/
1716
goscription
18-
config.toml
1917
config.json

Makefile

+115-77
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
PROJECTNAME := $(shell basename "$(PWD)")
2-
# PROJECTNAME := SET-PAYMENT
3-
VERSION := v0.1.0-0
1+
PROJECTNAME := $(shell go run app/main.go project)
2+
VERSION := $(shell go run app/main.go version)
43
RELEASENAME := $(PROJECTNAME)_$(VERSION)
54

6-
MYSQL_USER ?= root
7-
MYSQL_PASSWORD ?= 123456
8-
MYSQL_ADDRESS ?= 127.0.0.1:3306
9-
MYSQL_DATABASE ?= goscription
5+
MYSQL_DB ?= $(shell go run app/main.go mysql)
6+
MYSQL_DIR ?= database/migrations
107

118
ifndef $(GOPATH)
129
GOPATH=$(shell go env GOPATH)
@@ -18,147 +15,188 @@ all:
1815
.PHONY: lint-prepare
1916
lint-prepare:
2017
@echo "Preparing Linter"
18+
ifeq (,$(wildcard ./bin/golangci-lint))
2119
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s latest
20+
else
21+
@echo "golangci-lint already installed"
22+
endif
2223

23-
.PHONY: lint
24-
lint:
25-
./bin/golangci-lint run \
24+
## lint, l: run linter to check quality code
25+
.PHONY: lint l
26+
lint l:
27+
@make lint-prepare
28+
./bin/golangci-lint run -v \
2629
--exclude-use-default=false \
27-
--enable=golint \
30+
--disable-all \
31+
--enable=goimports \
2832
--enable=gocyclo \
33+
--enable=nakedret \
34+
--enable=golint \
35+
--enable=gosimple \
2936
--enable=goconst \
37+
--enable=misspell \
3038
--enable=unconvert \
39+
--enable=varcheck \
40+
--enable=unused \
41+
--enable=deadcode \
42+
--enable=unparam \
43+
--enable=ineffassign \
44+
--enable=gocritic \
45+
--enable=prealloc \
46+
--enable=scopelint \
47+
--enable=staticcheck \
48+
--enable=gosec \
3149
./...
3250

33-
## mockery-prepare: install mockery before generate
3451
.PHONY: mockery-prepare
3552
mockery-prepare:
36-
@echo "Remove the existing one if exists"
37-
@rm -rf $(GOPATH)/bin/mockery
53+
@echo "prepare mockery"
54+
ifeq (,$(wildcard ./bin/mockery))
3855
@echo "Installing mockery"
39-
@go get github.com/vektra/mockery/.../
56+
@go build -a -o ./bin/mockery github.com/vektra/mockery/v2/
57+
else
58+
@echo "mockery already installed"
59+
endif
4060

4161
## mockery-generate: generate all mock
62+
.PHONY: mockery-generate
4263
mockery-generate:
43-
@$(GOPATH)/bin/mockery -all
44-
45-
.PHONY: mysql-test-up
46-
mysql-test-up:
47-
@docker-compose up -d mysql_test
64+
@make mockery-prepare
65+
@echo "start mockery all"
66+
@./bin/mockery --all
4867

49-
.PHONY: mysql-down-test
50-
mysql-down-test:
51-
@docker-compose stop mysql_test
52-
53-
## test-docker: test docker integration
54-
.PHONY: test-docker
55-
test-docker: mysql-test-up
56-
@go test -v -race ./...
57-
@make mysql-down-test
58-
59-
## test-unit: run all unit test & lint
60-
.PHONY: test-unit
61-
test-unit:
68+
## test-unit, t: run all unit test
69+
.PHONY: test-unit t
70+
test-unit t:
6271
@echo "Start: unit test"
6372
@go test -v -short -race ./...
64-
@echo "gofmt: start..."
65-
@gofmt -l -e -d .
66-
@echo "gofmt: done"
67-
@echo "golint: start..."
68-
@golint ./...
69-
@echo "golint: done"
7073
@echo "End: unit test"
7174

72-
## go-build: build to compile the project & swagger docs
73-
go-build:
75+
## go-build, b: build to compile the project & swagger docs
76+
.PHONY: go-build b
77+
go-build b:
7478
@echo "Start: build "$(PROJECTNAME)" project"
75-
@make test-unit
7679
@make swagger-init
7780
@make swagger-validate
78-
@echo "Run: go build -o "$(PROJECTNAME)" app/main.go"
79-
@go build -o "$(PROJECTNAME)" app/main.go
81+
@echo "Run: go build -o bin/"$(PROJECTNAME)" app/main.go"
82+
@go build -o bin/"$(PROJECTNAME)" app/main.go
8083
@echo "Done: "$(PROJECTNAME)" project has build"
8184

82-
## go-run: run project
83-
go-run:
84-
@make go-build
85+
## go-run, r: run http rest api project
86+
.PHONY: go-run r
87+
go-run r:
8588
@echo "Run "$(PROJECTNAME)" project"
86-
./$(PROJECTNAME) http
89+
@make swagger-init
90+
@make swagger-validate
91+
@go run app/main.go
92+
93+
## worker, w: run worker for consumer
94+
.PHONY: worker w
95+
worker w:
96+
@echo "Run "$(PROJECTNAME)" worker"
97+
@go run app/main.go worker
8798

8899
## docker-build: dockerize the project
89100
.PHONY: docker-build
90101
docker-build:
91-
@make swagger-init
92-
@make swagger-validate
93-
@docker build . -t "$(PROJECTNAME)":latest
102+
@docker build . -f build/builder/Dockerfile -t "$(PROJECTNAME)":latest
94103

95104
## docker-up: run docker compose up
96105
.PHONY: docker-up
97106
docker-up:
98107
@docker-compose up -d
99-
@make mysql-down-test
100108

101109
## docker-down: run docker compose down
102110
.PHONY: docker-down
103111
docker-down:
104112
@docker-compose down
105113

106-
## swagger-init: initialize swagger to folder ./docs
114+
.PHONY: swagger-init-prepare
115+
swagger-init-prepare:
116+
@echo "Prepare swag"
117+
ifeq (,$(wildcard ./bin/swag))
118+
go build -a -o ./bin/swag github.com/swaggo/swag/cmd/swag
119+
else
120+
@echo "swag already installed"
121+
endif
122+
123+
.PHONY: swagger-validate-prepare
124+
swagger-validate-prepare:
125+
@echo "Prepare go-swagger"
126+
ifeq (,$(wildcard ./bin/go-swagger))
127+
go build -a -o ./bin/go-swagger github.com/go-swagger/go-swagger/cmd/swagger
128+
else
129+
@echo "go-swagger already installed"
130+
endif
131+
132+
## swagger-init: initialize swagger to folder ./api/docs
107133
.PHONY: swagger-init
108134
swagger-init:
135+
@make swagger-init-prepare
109136
@echo "Start: Initialize swagger"
110-
@swag init -g app/main.go
111-
@echo "Done: initialize ./docs swagger"
137+
./bin/swag init -g app/main.go -o ./api/docs
138+
@echo "Done: initialize ./api/docs swagger"
112139

113-
## swagger-validate: validate swagger.yaml in folder ./docs
140+
## swagger-validate: validate swagger.yaml in folder ./api/docs
114141
.PHONY: swagger-validate
115142
swagger-validate:
143+
@make swagger-validate-prepare
116144
@echo "Start: Validate swagger"
117-
@swagger validate docs/swagger.yaml
145+
./bin/go-swagger validate api/docs/swagger.yaml
118146
@echo "Done: Validate swagger"
119147

120-
## migrate-prepare: prepare migrate the schema with mysql
121148
.PHONY: migrate-prepare
122149
migrate-prepare:
123-
@go get -u github.com/golang-migrate/migrate/v4
150+
@echo "prepare golang migrate using mysql"
151+
ifeq (,$(wildcard ./bin/migrate))
124152
@go build -a -o ./bin/migrate -tags 'mysql' github.com/golang-migrate/migrate/v4/cli
153+
else
154+
@echo "golang-migrate already installed"
155+
endif
156+
157+
## migrate-create [file_name]: create migration file
158+
.PHONY: migrate-create
159+
migrate-create:
160+
@make migrate-prepare
161+
./bin/migrate create -ext sql -dir $(MYSQL_DIR) -seq $(filter-out $@,$(MAKECMDGOALS))
125162

126-
## migrate-up: run migration up to latest version
163+
## migrate-up [N]: Apply all or N up migrations
127164
.PHONY: migrate-up
128165
migrate-up:
129-
@migrate -database "mysql://$(MYSQL_USER):$(MYSQL_PASSWORD)@tcp($(MYSQL_ADDRESS))/$(MYSQL_DATABASE)" \
130-
-path=internal/database/mysql/migrations up
166+
@make migrate-prepare
167+
./bin/migrate -database "$(MYSQL_DB)" -path=$(MYSQL_DIR) up $(filter-out $@,$(MAKECMDGOALS))
131168

132-
## migrate-down: run migration down to oldest version
169+
## migrate-down [N]: Apply all or N down migrations
133170
.PHONY: migrate-down
134171
migrate-down:
135-
@migrate -database "mysql://$(MYSQL_USER):$(MYSQL_PASSWORD)@tcp($(MYSQL_ADDRESS))/$(MYSQL_DATABASE)" \
136-
-path=internal/database/mysql/migrations down
137-
138-
.PHONY: help
139-
all: help
140-
help: Makefile
141-
@echo
142-
@echo " Choose a command run in "$(PROJECTNAME)":"
143-
@echo
144-
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
145-
@echo
172+
@make migrate-prepare
173+
./bin/migrate -database "$(MYSQL_DB)" -path=$(MYSQL_DIR) down $(filter-out $@,$(MAKECMDGOALS))
146174

147175
## release: create release app with version
148176
.PHONY: release
149177
release:
150178
@echo "Start: build release "$(RELEASENAME)""
151-
@rm -rf release
152-
@mkdir release
153-
179+
@make lint
154180
@make test-unit
155181
@make swagger-init
156182
@make swagger-validate
157183

184+
@rm -rf release
185+
@mkdir release
186+
158187
@echo "Build release "$(RELEASENAME)"_linux_amd64"
159188
@GOOS=linux GOARCH=amd64 go build -o release/"$(RELEASENAME)"_linux_amd64 app/main.go
160189

161190
@echo "Build release "$(RELEASENAME)"_darwin_amd64"
162191
@GOOS=darwin GOARCH=amd64 go build -o release/"$(RELEASENAME)"_darwin_amd64 app/main.go
163192

164193
@echo "Done: build release "$(RELEASENAME)""
194+
195+
.PHONY: help
196+
all: help
197+
help: Makefile
198+
@echo
199+
@echo " Choose a command run in "$(PROJECTNAME)":"
200+
@echo
201+
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
202+
@echo

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Some features & libraries used on this template:
2121

2222
* Clone the Repos
2323
```bash
24-
$ git clone https://github.com/abyanjksatu/goscription.git
24+
$ git clone https://github.com/kecci/goscription.git
2525
```
2626

2727
## Command

0 commit comments

Comments
 (0)