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?
go.mkto your project:
curl -O https://raw.githubusercontent.com/hgfischer/gomk/master/go.mk
include go.mkin a new or existing Makefile;
Makefile.sampleto see some examples on how to integrate with your own build workflow:
curl -O https://raw.githubusercontent.com/hgfischer/gomk/master/Makefile.sample
How it works
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 name
.gofiles inside the project repository
GOPKGS: 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 one
gomkxbuild: build all cross-platform binaries, using
gomkclean: clean the project directory of the files produced by go.mk
gomkupdate: update your go.mk file
go tool vetin each source file
golintin each source file
go fmtin the entire project
go testfor all pkgs in the project
go testwith race detection in all pkgs in the project
deps: install all deps needed by the project
cover: run tests with coverage report in all pkgs in the projects
printvars: print all variables defined in the Makefile
Godep support (optional)
savegodeps: save all deps with godep
restoregodeps: restore all deps with godep
updategodeps: update all deps with godep
- Add targets for other tools
- Add support for