-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
There is usually no config file. Everything is derived from go.mod, git, and
your directory layout: project name, module path, main packages, repo owner and
version.
Run letsgo plan --explain to see which defaults were inferred and from what
evidence. Zero config only feels safe if the inference is inspectable.
When a config file exists it is written in the same directive syntax as
go.mod, because you already read that fluently:
// letsgo.mod
project foo
build (
linux/amd64
linux/arm64
darwin/arm64
)
archive (
README.md
LICENSE
)
budget linux/amd64 15MB
brew danielriddell21/tap
image
letsgo fmt formats it.
| Directive | What it does |
|---|---|
project |
Overrides the project name inferred from the module path |
build |
The target matrix, as os/arch entries |
archive |
Extra files to include in each archive |
budget |
Caps a target's binary size |
brew |
Writes a Homebrew formula to the named tap — see Publishing |
image |
Publishes multi-arch container images — see Publishing |
A budget caps a target's binary. The size is parsed during plan, so a typo
fails in two seconds rather than after a five-target cross-compile; the cap
itself is checked the moment the binaries exist, and every target is reported at
once rather than one rebuild at a time.
Reaching 90% of a budget is a warning, because a cap you only hear about on the day it breaks tends to break on release day.
If a repo needs a new config option, the first question is whether we could have inferred it. A growing config file is the failure mode letsgo is specifically trying to avoid, and every option added is a small admission that inference wasn't good enough. See Design.