gogo
A simple task runner.
Installation
go install github.com/dgageot/gogo@latest
Usage
Create a gogo.yaml in your project root:
tasks:
default:
cmd: echo "Hello, World!"
build:
cmd: go build -o bin/myapp ./...
sources: go # built-in preset: **/*.go + go.mod + go.sum
generates:
- bin/myapp
test:
cmd: go test ./...
sources: go
Run a task:
gogo build
gogo test
List available tasks:
gogo -l
Watch sources and re-run on changes:
gogo -w test
Dry run — see what would execute:
gogo -n build
Features
A quick tour. Each item links to the canonical docs page.
- Incremental builds — SHA-256 source checksums or
generates: timestamp comparison (Sources & Checksums)
- Source presets — reuse named glob lists; built-in
go / go-vendored, or define your own (Sources & Checksums)
- Watch mode — polls sources at a configurable
interval: and re-runs (Watch Mode)
- Concurrent dependencies with deduplication (Dependencies)
- Variables — template expansion,
sh: shell-evaluated values, built-in {{.GIT_*}} and {{.TASK_FILE_DIR}} (Variables)
- Dotenv — global and per-task, with deterministic precedence (Dotenv)
- 1Password secrets via
op:// references and a top-level secrets: block (Secrets)
- Preconditions & requires to guard tasks before they run (Preconditions)
- Platform filtering to restrict tasks to specific OS/arch
- Includes & flatten to split task files across subdirectories (Includes)
- Dry run mode (
gogo -n) to preview the plan (CLI Reference)
Full documentation: https://dgageot.github.io/gogo/
Secrets
gogo integrates with 1Password CLI to inject secrets into tasks. Use op:// references in your task environment:
tasks:
deploy:
env:
DB_PASSWORD: op://vault/item/field
cmd: deploy --password $DB_PASSWORD
When op:// values are detected, gogo wraps the command with op run which resolves secrets and handles authentication (including Touch ID).
License
Apache License 2.0 — see LICENSE for details.