Godo is a modern, Make‑inspired task runner, designed to make your build and automation workflows more intuitive and platform‑agnostic.
where
: Execute commands from any subdirectory, without manualcd
steps.times
: Execute commands any amount of times in a loop.variants
: Define OS‑ or environment‑specific command variants (based onGOOS
).description
: Provide human‑readable explanations for each task.- Fallback Help: Running
godo
with no arguments lists all available tasks and their descriptions.
Create a godo.yaml
file in your project root to define your tasks. Here's a minimal example:
commands:
test:
run:
- go clean -testcache
- go test ./... -v
description: Runs all Go tests
os-info:
variants:
- run: echo "Windows"
platform: windows
- run: echo "Linux"
platform: linux
- run: echo "Unknown OS"
platform: default
description: Prints the current operating system
Each task under commands:
can include:
run
(array of strings): One or more shell commands executed in sequence.where
(string): Relative path to the directory where commands run (defaults to project root).times
(int): Defualt is 1. Runs all the commands in the run field x amount of times, works for variants as well.type
(string): Execution mode (raw
,shell
, orpath
). Usually, the default is sufficient.description
(string): A short description forgodo
’s help output.variants
(array): Platform or environment–specific overrides (ignoresrun
at the root):run
: Command(s) to execute.platform
: AGOOS
value (e.g.,darwin
,linux
,windows
) ordefault
fallback.type
: Inherited from the task’stype
if omitted.
For a full list of supported
GOOS
values, see the official Go documentation or this gist of platforms.
Install the latest version via go install
:
go install github.com/VincentBrodin/godo@latest
Ensure $GOPATH/bin
(or $GOBIN
) is in your PATH
.
- Run
godo
to list all tasks and descriptions. - Execute a task:
godo <task-name>
(e.g.,godo test
). - Combine complex workflows by breaking them into smaller, reusable
godo
tasks, also great for loops.
Contributions and feedback are welcome! To get started:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/my-cool-task
. - Make your changes and add tests if applicable.
- Submit a pull request with a clear description of your improvements.
This project is licensed under the MIT License.