gödel is a Go build tool that provides tasks for configuring, formatting, checking, testing, building and publishing Go projects in a declarative, consistent and reproducible manner across different platforms and environments. gödel can be used in both local development environments and for verifying the correctness of project in CI environments. gödel uses declarative configuration to define the parameters for a project and provides an executable that orchestrates build tasks using standard Go commands. It centralizes project configuration and eliminates the need for custom build scripts that conflate configuration with logic. gödel is designed to be portable, fast and lightweight -- adding it to a project consists of copying a single file and directory into the project and adds less than 50kb of version-controlled material.
gödel is also highly extensible and configurable. The core functionality of gödel is provided by plugins and assets, and it is easy to write new plugins or assets and to configure a gödel instance to use custom plugins or assets as needed.
The following features are provided by a default gödel installation (either as builtin tasks or default plugin tasks):
godelinit
program./godelw git-hooks
installs Git commit hook that formats files on commit./godelw goland
creates and configures a GoLand project for the project./godelw format
formats all code in a project./godelw check
runs a variety of code linting checks on all the code in a project
./godelw license
applies a specified license header to all Go files in a project
./godelw test
runs the tests in the project
./godelw build
builds executables for main
packages in the project
ldflag
for version and other variables./godelw dist
creates distribution files for products
tgz
distributions./godelw publish
publishes artifacts to Bintray, Artifactory or GitHub
palantir/godel/pkg/products
package provides a mechanism to easily write integration tests for gödel projects
./godelw update
updates gödel to the version specified in godel/config/godel.properties
./godelw verify
runs all of the tasks that declare support for verification
./godelw github-wiki
mirrors a documents directory to a GitHub Wiki repositoryThis list is not exhaustive -- run ./godelw --help
for a list of all of the available commands. Furthermore, custom
Documentation for this project is in the docs
directory and the GitHub Wiki
(the GitHub Wiki mirrors the contents of the docs
directory).
This project is made available under the Apache 2.0 License.