Skip to content

Commit 80533f7

Browse files
committed
docs: add releasing playbook
1 parent 7d4e2b9 commit 80533f7

1 file changed

Lines changed: 88 additions & 0 deletions

File tree

docs/RELEASING.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
summary: "Release checklist for gogcli (GitHub release + Homebrew tap)"
3+
---
4+
5+
# Releasing `gogcli`
6+
7+
This playbook mirrors the Homebrew + GitHub flow used in `../camsnap`.
8+
9+
Assumptions:
10+
- Repo: `steipete/gogcli`
11+
- Tap repo: `../homebrew-tap` (tap: `steipete/tap`)
12+
- Homebrew formula name: `gogcli` (installs the `gog` binary)
13+
14+
## 0) Prereqs
15+
- Clean working tree on `main`.
16+
- Go toolchain installed (Go version comes from `go.mod`).
17+
- `make` works locally.
18+
- Access to the tap repo (e.g. `steipete/homebrew-tap`).
19+
20+
## 1) Verify build is green
21+
```sh
22+
make ci
23+
```
24+
25+
## 2) Update changelog
26+
- Add a new section to `CHANGELOG.md` for the version you’re releasing.
27+
28+
Example heading:
29+
- `## 0.1.0 - 2025-12-12`
30+
31+
## 3) Tag & push
32+
```sh
33+
git checkout main
34+
git pull
35+
36+
# commit changelog + any release tweaks
37+
git commit -am "release: vX.Y.Z"
38+
39+
git tag -a vX.Y.Z -m "Release X.Y.Z"
40+
git push origin main --tags
41+
```
42+
43+
## 4) Update (or add) the Homebrew formula
44+
In the tap repo (assumed sibling at `../homebrew-tap`), create/update `Formula/gogcli.rb`.
45+
46+
Recommended formula shape (build-from-source, no binary assets needed):
47+
- `version "X.Y.Z"`
48+
- `url "https://github.com/steipete/gogcli/archive/refs/tags/vX.Y.Z.tar.gz"`
49+
- `sha256 "<sha256>"`
50+
- `depends_on "go" => :build`
51+
- Build:
52+
- `system "go", "build", *std_go_args(ldflags: "-s -w"), "./cmd/gog"`
53+
54+
Compute the SHA256 for the tag tarball:
55+
```sh
56+
curl -L -o /tmp/gogcli.tar.gz https://github.com/steipete/gogcli/archive/refs/tags/vX.Y.Z.tar.gz
57+
shasum -a 256 /tmp/gogcli.tar.gz
58+
```
59+
60+
Commit + push in the tap repo:
61+
```sh
62+
cd ../homebrew-tap
63+
git add Formula/gogcli.rb
64+
git commit -m "gogcli vX.Y.Z"
65+
git push origin main
66+
```
67+
68+
## 5) Sanity-check install from tap
69+
```sh
70+
brew update
71+
brew uninstall gogcli || true
72+
brew untap steipete/tap || true
73+
brew tap steipete/tap
74+
brew install steipete/tap/gogcli
75+
brew test steipete/tap/gogcli
76+
77+
gog --help
78+
```
79+
80+
## 6) Create GitHub Release
81+
- Create a GitHub Release for tag `vX.Y.Z`.
82+
- Title: `gogcli X.Y.Z` (or `gog X.Y.Z` if you prefer the binary name).
83+
- Body: copy the bullets from `CHANGELOG.md` for that version.
84+
85+
## Notes
86+
- `gog` currently does not print a version string; use tags + changelog as the source of truth.
87+
- If you later add `gog version`, update this doc to validate `gog version` post-install.
88+

0 commit comments

Comments
 (0)