Repos that use each other
A repo pins what it takes from another, and the pins are the only record. Renovate moves them when there is a release.
| What | Pinned in | How |
|---|---|---|
| charter-lib (a TypeScript Worker) | package.json, dependencies | The URL of charter-lib-X.Y.Z.tgz on the release vX.Y.Z, version and all |
| The Go library (a Go Worker) | go.mod | github.com/joeblew999/charter, at its tag vX.Y.Z, which every release has |
The charter command (any repo) | mise.toml | "github:joeblew999/charter" = "X.Y.Z" (mise use github:joeblew999/charter): the binary on the release vX.Y.Z. In a Go repo, the same version as the library, which charter check holds it to |
| A Go SDK another project publishes | go.mod | The module path of its sdk/go, at a commit or a tag |
| Tools | mise.toml | Exact versions |
Renovate
charter init writes renovate.json, charter’s own. It does nothing until the Renovate app is installed on the repo: the file is its settings, not the bot. Then:
| It watches | What it does |
|---|---|
mise.toml tools, go.mod, package.json | Opens a pull request when a pinned project releases (managers mise, gomod, npm) |
charter-lib’s release URL in package.json | The same, from charter’s releases v* |
| Minor and patch updates | Merges them once the checks pass; a major one waits for a person |
| charter’s own | One pull request for charter, charter-lib and the Go library together |
renovate = false in charter.toml’s [github] leaves the file to the repo. Moving to a release by hand: mise use github:joeblew999/charter@X.Y.Z, then charter init; in Go, go get github.com/joeblew999/charter@vX.Y.Z && go mod tidy.
Breaking changes
A contract change that removes or renames an operation, a field or a parameter breaks the SDKs another repo pinned. Before a release, compare the specs with the last one’s: git diff <last tag> -- fern/.