An opinionated Makefile for Go projects.
- How would you implement a building workflow using Go alongside other technologies?
- Do you remember how to run the commands to check the test coverage of you Go project?
- Download
go.mk
to your project:
curl -O https://raw.githubusercontent.com/hgfischer/gomk/master/go.mk
include go.mk
in a new or existing Makefile;- Check
Makefile.sample
to see some examples on how to integrate with your own build workflow:
curl -O https://raw.githubusercontent.com/hgfischer/gomk/master/Makefile.sample
GoMk defines default variables and targets for a Go project, to help maintain a healthy project. It also checks your current Go environment.
APPBIN
: name of the application, based on the repository nameGOSOURCES
: all.go
files inside the project repositoryGOPKGS
: all Go pkgs inside the project repository
NOTE: Check the go.mk file for other predefined variables that may conflict with other variables defined in your Makefile.
gomkbuild
: build the application binary, if there is onegomkxbuild
: build all cross-platform binaries, usinggox
gomkclean
: clean the project directory of the files produced by go.mkgomkupdate
: update your go.mk filevet
: rungo tool vet
in each source filelint
: rungolint
in each source filefmt
: rungo fmt
in the entire projecttest
: rungo test
for all pkgs in the projectrace
: rungo test
with race detection in all pkgs in the projectdeps
: install all deps needed by the projectcover
: run tests with coverage report in all pkgs in the projectsprintvars
: print all variables defined in the Makefile
savegodeps
: save all deps with godeprestoregodeps
: restore all deps with godepupdategodeps
: update all deps with godep
- Add targets for other tools
- Add support for
gb