A simple task runner.
go install github.com/dgageot/gogo@latestCreate 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: goRun a task:
gogo build
gogo testList available tasks:
gogo -lWatch sources and re-run on changes:
gogo -w testDry run — see what would execute:
gogo -n buildA 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-levelsecrets: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/
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_PASSWORDWhen op:// values are detected, gogo wraps the command with op run which resolves secrets and handles authentication (including Touch ID).
Apache License 2.0 — see LICENSE for details.