This is my boilerplate for a Go http server project. Feedback and suggestions are encouraged!
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- ARCH := $(shell uname -m)
- VERSION := $(shell git describe --always --dirty=-dirty)
-
- FN := http
-
- UNAME_S := $(shell uname -s)
-
- GOLDFLAGS += -X main.Version=$(VERSION)
- GOLDFLAGS += -X main.Buildarch=$(ARCH)
- GOFLAGS := -ldflags "$(GOLDFLAGS)"
-
- default: debug
-
- commit: fmt lint
- git commit -a
-
- # get golangci-lint with:
- # go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.31.0
- # get gofumports with:
- # go get mvdan.cc/gofumpt/gofumports
- fmt:
- gofumports -l -w .
- golangci-lint run --fix
-
- lint:
- golangci-lint run
- sh -c 'test -z "$$(gofmt -l .)"'
-
- debug: ./$(FN)d
- DEBUG=1 GOTRACEBACK=all ./$(FN)d
-
- debugger:
- cd cmd/$(FN)d && dlv debug main.go
-
- run: ./$(FN)d
- ./$(FN)d
-
- clean:
- -rm -f ./$(FN)d debug.log
-
- docker:
- docker build --progress plain .
-
- ./$(FN)d: cmd/$(FN)d/main.go */*.go
- cd httpserver && \
- cd ../cmd/$(FN)d && \
- go build -o ../../$(FN)d $(GOFLAGS) . && \
- cd ../.. && \
- rice append -i ./httpserver --exec ./httpd
-
- tools: rice-install
- go get -v github.com/golangci/golangci-lint/cmd/golangci-lint@v1.31.0
- go get -v mvdan.cc/gofumpt/gofumports
-
- rice-install:
- go get -v github.com/GeertJohan/go.rice/rice
|