detached 5e11c66

ci(release): publish releases on ermite instead of GitHub

GoReleaser targets git.bnema.dev through templated github_urls, the AUR PKGBUILD uses public download URLs, and install.sh resolves releases from ermite. The release job is skipped on the GitHub mirror.
commit
5e11c66f99efea0bf55510841f767e4691b885bd
author
brice · · 2026-10-22 05:31 UTC
parent
8c96729
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
6 files · +67 -42
M .github/workflows/release.yml +25 -9
@@ -4,18 +4,34 @@ on:
44 push:
55 tags: ['v*']
66
7-# Default to no token permissions; release alone needs GitHub Release writes.
7+# Default to no token permissions; release alone needs release writes.
88 permissions: {}
99
1010 jobs:
1111 release:
12+ # Releases are published by ermite (git.bnema.dev); the GitHub mirror
13+ # receives the tags but must not publish a second release or AUR push.
14+ if: github.server_url != 'https://github.com'
15+ runs-on: ubuntu-latest
1216 permissions:
1317 contents: write
14- # Pinned by SHA deliberately: this workflow receives the AUR key.
15- # Bump the pin manually when bnema/gh-actions changes.
16- uses: bnema/gh-actions/.github/workflows/go-release.yml@fcda8139e65ec45af95bc385e318351c86712d48
17- with:
18- go-version-file: go.mod
19- goreleaser-version: '~> v2'
20- secrets:
21- AUR_KEY: ${{ secrets.AUR_KEY }}
18+ steps:
19+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
20+ with:
21+ fetch-depth: 0
22+ fetch-tags: true
23+ persist-credentials: false
24+ - name: Fetch tags
25+ run: git fetch --force --tags
26+ - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
27+ with:
28+ go-version-file: go.mod
29+ - uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a
30+ with:
31+ distribution: goreleaser
32+ version: '~> v2'
33+ args: release --clean
34+ env:
35+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+ # SSH key for the vev-bin AUR push.
37+ AUR_KEY: ${{ secrets.AUR_KEY }}
@@ -4,18 +4,34 @@ on:
4 push:4 push:
5 tags: ['v*']5 tags: ['v*']
6 6
7-# Default to no token permissions; release alone needs GitHub Release writes.7+# Default to no token permissions; release alone needs release writes.
8 permissions: {}8 permissions: {}
9 9
10 jobs:10 jobs:
11 release:11 release:
12+ # Releases are published by ermite (git.bnema.dev); the GitHub mirror
13+ # receives the tags but must not publish a second release or AUR push.
14+ if: github.server_url != 'https://github.com'
15+ runs-on: ubuntu-latest
12 permissions:16 permissions:
13 contents: write17 contents: write
14- # Pinned by SHA deliberately: this workflow receives the AUR key.18+ steps:
15- # Bump the pin manually when bnema/gh-actions changes.19+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
16- uses: bnema/gh-actions/.github/workflows/go-release.yml@fcda8139e65ec45af95bc385e318351c86712d4820+ with:
17- with:21+ fetch-depth: 0
18- go-version-file: go.mod22+ fetch-tags: true
19- goreleaser-version: '~> v2'23+ persist-credentials: false
20- secrets:24+ - name: Fetch tags
21- AUR_KEY: ${{ secrets.AUR_KEY }}25+ run: git fetch --force --tags
26+ - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
27+ with:
28+ go-version-file: go.mod
29+ - uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a
30+ with:
31+ distribution: goreleaser
32+ version: '~> v2'
33+ args: release --clean
34+ env:
35+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+ # SSH key for the vev-bin AUR push.
37+ AUR_KEY: ${{ secrets.AUR_KEY }}
M .goreleaser.yaml +13 -9
@@ -2,6 +2,14 @@ version: 2
22
33 project_name: vev
44
5+# Releases are published on ermite. In CI the runner sets GITHUB_API_URL and
6+# GITHUB_SERVER_URL to an address the job can reach; the public URLs are the
7+# fallback for a local run.
8+github_urls:
9+ api: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/'
10+ upload: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/uploads/'
11+ download: '{{ or (index .Env "GITHUB_SERVER_URL") "https://git.bnema.dev" }}/'
12+
513 before:
614 hooks:
715 - go mod tidy
@@ -47,7 +55,7 @@ checksum:
4755
4856 changelog:
4957 sort: asc
50- use: github
58+ use: git
5159 filters:
5260 exclude:
5361 - '^docs(\(.+\))?:'
@@ -89,7 +97,7 @@ release:
8997
9098 ### Script (Linux x86_64/arm64, macOS arm64)
9199 ```sh
92- curl -fsSL https://raw.githubusercontent.com/bnema/vev/{{ .Tag }}/install.sh | VEV_VERSION={{ .Tag }} sh
100+ curl -fsSL https://git.bnema.dev/vev/raw/{{ .Tag }}/install.sh | VEV_VERSION={{ .Tag }} sh
93101 ```
94102
95103 ### Arch Linux
@@ -107,19 +115,15 @@ release:
107115 xattr -d com.apple.quarantine ~/.local/bin/vev
108116 ```
109117
110- {{- if .PreviousTag }}
111- **Full Changelog**: https://github.com/bnema/vev/compare/{{ .PreviousTag }}...{{ .Tag }}
112- {{- else }}
113- **Full Changelog**: https://github.com/bnema/vev/releases/tag/{{ .Tag }}
114- {{- end }}
115-
116118 git:
117119 tag_sort: -version:refname
118120
119121 aurs:
120122 - name: vev-bin
121123 ids: ['default']
122- homepage: https://github.com/bnema/vev
124+ homepage: https://git.bnema.dev/vev
125+ # Public URL: github_urls.download is the CI-only relay address.
126+ url_template: 'https://git.bnema.dev/vev/releases/download/{{ .Tag }}/{{ .ArtifactName }}'
123127 description: Terminal multiplexer with a per-user daemon, server-side rendering, and minimal socket/SSH diffs
124128 maintainers:
125129 - bnema <b at bnema dot dev>
@@ -2,6 +2,14 @@ version: 2
2 2
3 project_name: vev3 project_name: vev
4 4
5+# Releases are published on ermite. In CI the runner sets GITHUB_API_URL and
6+# GITHUB_SERVER_URL to an address the job can reach; the public URLs are the
7+# fallback for a local run.
8+github_urls:
9+ api: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/'
10+ upload: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/uploads/'
11+ download: '{{ or (index .Env "GITHUB_SERVER_URL") "https://git.bnema.dev" }}/'
12+
5 before:13 before:
6 hooks:14 hooks:
7 - go mod tidy15 - go mod tidy
@@ -47,7 +55,7 @@ checksum:
47 55
48 changelog:56 changelog:
49 sort: asc57 sort: asc
50- use: github58+ use: git
51 filters:59 filters:
52 exclude:60 exclude:
53 - '^docs(\(.+\))?:'61 - '^docs(\(.+\))?:'
@@ -89,7 +97,7 @@ release:
89 97
90 ### Script (Linux x86_64/arm64, macOS arm64)98 ### Script (Linux x86_64/arm64, macOS arm64)
91 ```sh99 ```sh
92- curl -fsSL https://raw.githubusercontent.com/bnema/vev/{{ .Tag }}/install.sh | VEV_VERSION={{ .Tag }} sh100+ curl -fsSL https://git.bnema.dev/vev/raw/{{ .Tag }}/install.sh | VEV_VERSION={{ .Tag }} sh
93 ```101 ```
94 102
95 ### Arch Linux103 ### Arch Linux
@@ -107,19 +115,15 @@ release:
107 xattr -d com.apple.quarantine ~/.local/bin/vev115 xattr -d com.apple.quarantine ~/.local/bin/vev
108 ```116 ```
109 117
110- {{- if .PreviousTag }}
111- **Full Changelog**: https://github.com/bnema/vev/compare/{{ .PreviousTag }}...{{ .Tag }}
112- {{- else }}
113- **Full Changelog**: https://github.com/bnema/vev/releases/tag/{{ .Tag }}
114- {{- end }}
115-
116 git:118 git:
117 tag_sort: -version:refname119 tag_sort: -version:refname
118 120
119 aurs:121 aurs:
120 - name: vev-bin122 - name: vev-bin
121 ids: ['default']123 ids: ['default']
122- homepage: https://github.com/bnema/vev124+ homepage: https://git.bnema.dev/vev
125+ # Public URL: github_urls.download is the CI-only relay address.
126+ url_template: 'https://git.bnema.dev/vev/releases/download/{{ .Tag }}/{{ .ArtifactName }}'
123 description: Terminal multiplexer with a per-user daemon, server-side rendering, and minimal socket/SSH diffs127 description: Terminal multiplexer with a per-user daemon, server-side rendering, and minimal socket/SSH diffs
124 maintainers:128 maintainers:
125 - bnema <b at bnema dot dev>129 - bnema <b at bnema dot dev>
M README.md +2 -2
@@ -2,7 +2,7 @@
22
33 <p align="center">
44 <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License: MIT"></a>
5- <a href="https://github.com/bnema/vev/releases"><img src="https://img.shields.io/badge/platforms-Linux%20%7C%20macOS-blue?style=flat-square" alt="Platforms: Linux and macOS"></a>
5+ <a href="https://git.bnema.dev/vev/releases"><img src="https://img.shields.io/badge/platforms-Linux%20%7C%20macOS-blue?style=flat-square" alt="Platforms: Linux and macOS"></a>
66 <a href="https://github.com/bnema/vev/commits/main"><img src="https://badgen.net/github/last-commit/bnema/vev/main?icon=github" alt="Last commit"></a>
77 <a href="https://github.com/bnema/vev/stargazers"><img src="https://badgen.net/github/stars/bnema/vev?icon=github" alt="GitHub stars"></a>
88 </p>
@@ -37,7 +37,7 @@ Remote and hybrid need vev installed on the remote host. Use `vev host add --tra
3737 ## Install
3838
3939 ```sh
40-curl -fsSL https://raw.githubusercontent.com/bnema/vev/main/install.sh | sh
40+curl -fsSL https://git.bnema.dev/vev/raw/main/install.sh | sh
4141 # Arch Linux: yay -S vev-bin
4242 # or: go install github.com/bnema/vev@latest
4343 ```
@@ -2,7 +2,7 @@
2 2
3 <p align="center">3 <p align="center">
4 <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License: MIT"></a>4 <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License: MIT"></a>
5- <a href="https://github.com/bnema/vev/releases"><img src="https://img.shields.io/badge/platforms-Linux%20%7C%20macOS-blue?style=flat-square" alt="Platforms: Linux and macOS"></a>5+ <a href="https://git.bnema.dev/vev/releases"><img src="https://img.shields.io/badge/platforms-Linux%20%7C%20macOS-blue?style=flat-square" alt="Platforms: Linux and macOS"></a>
6 <a href="https://github.com/bnema/vev/commits/main"><img src="https://badgen.net/github/last-commit/bnema/vev/main?icon=github" alt="Last commit"></a>6 <a href="https://github.com/bnema/vev/commits/main"><img src="https://badgen.net/github/last-commit/bnema/vev/main?icon=github" alt="Last commit"></a>
7 <a href="https://github.com/bnema/vev/stargazers"><img src="https://badgen.net/github/stars/bnema/vev?icon=github" alt="GitHub stars"></a>7 <a href="https://github.com/bnema/vev/stargazers"><img src="https://badgen.net/github/stars/bnema/vev?icon=github" alt="GitHub stars"></a>
8 </p>8 </p>
@@ -37,7 +37,7 @@ Remote and hybrid need vev installed on the remote host. Use `vev host add --tra
37 ## Install37 ## Install
38 38
39 ```sh39 ```sh
40-curl -fsSL https://raw.githubusercontent.com/bnema/vev/main/install.sh | sh40+curl -fsSL https://git.bnema.dev/vev/raw/main/install.sh | sh
41 # Arch Linux: yay -S vev-bin41 # Arch Linux: yay -S vev-bin
42 # or: go install github.com/bnema/vev@latest42 # or: go install github.com/bnema/vev@latest
43 ```43 ```
M RELEASING.md +22 -18
@@ -1,21 +1,24 @@
11 # Releasing vev
22
3-Releases are cut by tagging: `git tag v0.X.Y && git push origin v0.X.Y`.
4-The `release` workflow cross-compiles linux/amd64 + darwin/arm64
5-(`CGO_ENABLED=0`), publishes a GitHub Release with `checksums.txt`, and pushes
6-the `vev-bin` PKGBUILD to AUR (stable tags only — `skip_upload: auto` skips
7-AUR for `-rc.*`/`-alpha.*` prerelease tags).
3+Releases are cut by tagging: `git tag -s v0.X.Y -m v0.X.Y && git push origin v0.X.Y`.
4+`origin` is ermite (git.bnema.dev). Its `release` workflow cross-compiles
5+linux/amd64, linux/arm64 and darwin/arm64 (`CGO_ENABLED=0`), publishes the
6+release on git.bnema.dev with `checksums.txt`, and pushes the `vev-bin`
7+PKGBUILD to AUR (stable tags only: `skip_upload: auto` skips AUR for
8+`-rc.*`/`-alpha.*` prerelease tags). The GitHub mirror receives the tag but
9+publishes nothing.
810
911 ## Checklist
1012
11-1. main is green on both CI legs (ubuntu, macos-14).
12-2. Tag and push. Watch: `gh run watch`.
13-3. Verify the release page: two archives + `checksums.txt` + grouped changelog.
13+1. main is green on ermite CI (`ermite run list vev`).
14+2. Tag and push. Watch: `ermite run list vev`, then `ermite run watch vev <n>`.
15+3. Verify the release: `ermite release view vev v0.X.Y` shows three archives,
16+ `checksums.txt` and the grouped changelog.
1417 4. On Linux amd64, download the installer from the exact tag, inspect it,
1518 then run it for that same version:
1619 ```sh
1720 installer=$(mktemp)
18- curl -fsSL https://raw.githubusercontent.com/bnema/vev/v0.X.Y/install.sh -o "$installer"
21+ curl -fsSL https://git.bnema.dev/vev/raw/v0.X.Y/install.sh -o "$installer"
1922 less "$installer"
2023 VEV_VERSION=v0.X.Y sh "$installer"
2124 rm -f "$installer"
@@ -24,24 +27,25 @@ AUR for `-rc.*`/`-alpha.*` prerelease tags).
2427 5. Stable tags only: confirm https://aur.archlinux.org/packages/vev-bin
2528 picked up the new version.
2629
27-## If GitHub publishes but AUR fails
30+## If the release publishes but AUR fails
2831
29-Do **not** delete or re-push the tag. The GitHub release is the source of truth;
30-only the PKGBUILD push failed (usually SSH/key). Fix the cause, then either:
32+Do **not** delete or re-push the tag. The ermite release is the source of
33+truth; only the PKGBUILD push failed (usually SSH/key, secret `AUR_KEY`). Fix
34+the cause, then either:
3135
32-- Re-run the failed workflow job (`gh run rerun <run-id> --failed`), which
36+- Re-run the failed job (`ermite run rerun vev <n> --failed`), which
3337 re-executes goreleaser idempotently for the same tag, or
3438 - For manual recovery, clone
3539 `ssh://aur@aur.archlinux.org/vev-bin.git`, update its existing PKGBUILD for
36- the exact tag using that GitHub Release's `checksums.txt`, and regenerate
40+ the exact tag using that release's `checksums.txt`, and regenerate
3741 `.SRCINFO` with `makepkg --printsrcinfo > .SRCINFO`. Review the diff, then
3842 commit and push only the AUR repository.
3943
40-## If AUR publishes but GitHub fails
44+## If AUR publishes but the release fails
4145
42-Do **not** delete or re-push the tag. Fix the GitHub workflow failure and rerun
43-it (`gh run rerun <run-id> --failed`); if necessary, repair the GitHub Release
44-manually with the same tag's archives and `checksums.txt`, then verify both
46+Do **not** delete or re-push the tag. Fix the workflow failure and rerun it
47+(`ermite run rerun vev <n> --failed`); if necessary, repair the release with
48+`ermite release upload vev v0.X.Y <files> --clobber`, then verify both
4549 publication targets before proceeding.
4650
4751 ## Version stamping
@@ -1,21 +1,24 @@
1 # Releasing vev1 # Releasing vev
2 2
3-Releases are cut by tagging: `git tag v0.X.Y && git push origin v0.X.Y`.3+Releases are cut by tagging: `git tag -s v0.X.Y -m v0.X.Y && git push origin v0.X.Y`.
4-The `release` workflow cross-compiles linux/amd64 + darwin/arm644+`origin` is ermite (git.bnema.dev). Its `release` workflow cross-compiles
5-(`CGO_ENABLED=0`), publishes a GitHub Release with `checksums.txt`, and pushes5+linux/amd64, linux/arm64 and darwin/arm64 (`CGO_ENABLED=0`), publishes the
6-the `vev-bin` PKGBUILD to AUR (stable tags only — `skip_upload: auto` skips6+release on git.bnema.dev with `checksums.txt`, and pushes the `vev-bin`
7-AUR for `-rc.*`/`-alpha.*` prerelease tags).7+PKGBUILD to AUR (stable tags only: `skip_upload: auto` skips AUR for
8+`-rc.*`/`-alpha.*` prerelease tags). The GitHub mirror receives the tag but
9+publishes nothing.
8 10
9 ## Checklist11 ## Checklist
10 12
11-1. main is green on both CI legs (ubuntu, macos-14).13+1. main is green on ermite CI (`ermite run list vev`).
12-2. Tag and push. Watch: `gh run watch`.14+2. Tag and push. Watch: `ermite run list vev`, then `ermite run watch vev <n>`.
13-3. Verify the release page: two archives + `checksums.txt` + grouped changelog.15+3. Verify the release: `ermite release view vev v0.X.Y` shows three archives,
16+ `checksums.txt` and the grouped changelog.
14 4. On Linux amd64, download the installer from the exact tag, inspect it,17 4. On Linux amd64, download the installer from the exact tag, inspect it,
15 then run it for that same version:18 then run it for that same version:
16 ```sh19 ```sh
17 installer=$(mktemp)20 installer=$(mktemp)
18- curl -fsSL https://raw.githubusercontent.com/bnema/vev/v0.X.Y/install.sh -o "$installer"21+ curl -fsSL https://git.bnema.dev/vev/raw/v0.X.Y/install.sh -o "$installer"
19 less "$installer"22 less "$installer"
20 VEV_VERSION=v0.X.Y sh "$installer"23 VEV_VERSION=v0.X.Y sh "$installer"
21 rm -f "$installer"24 rm -f "$installer"
@@ -24,24 +27,25 @@ AUR for `-rc.*`/`-alpha.*` prerelease tags).
24 5. Stable tags only: confirm https://aur.archlinux.org/packages/vev-bin27 5. Stable tags only: confirm https://aur.archlinux.org/packages/vev-bin
25 picked up the new version.28 picked up the new version.
26 29
27-## If GitHub publishes but AUR fails30+## If the release publishes but AUR fails
28 31
29-Do **not** delete or re-push the tag. The GitHub release is the source of truth;32+Do **not** delete or re-push the tag. The ermite release is the source of
30-only the PKGBUILD push failed (usually SSH/key). Fix the cause, then either:33+truth; only the PKGBUILD push failed (usually SSH/key, secret `AUR_KEY`). Fix
34+the cause, then either:
31 35
32-- Re-run the failed workflow job (`gh run rerun <run-id> --failed`), which36+- Re-run the failed job (`ermite run rerun vev <n> --failed`), which
33 re-executes goreleaser idempotently for the same tag, or37 re-executes goreleaser idempotently for the same tag, or
34 - For manual recovery, clone38 - For manual recovery, clone
35 `ssh://aur@aur.archlinux.org/vev-bin.git`, update its existing PKGBUILD for39 `ssh://aur@aur.archlinux.org/vev-bin.git`, update its existing PKGBUILD for
36- the exact tag using that GitHub Release's `checksums.txt`, and regenerate40+ the exact tag using that release's `checksums.txt`, and regenerate
37 `.SRCINFO` with `makepkg --printsrcinfo > .SRCINFO`. Review the diff, then41 `.SRCINFO` with `makepkg --printsrcinfo > .SRCINFO`. Review the diff, then
38 commit and push only the AUR repository.42 commit and push only the AUR repository.
39 43
40-## If AUR publishes but GitHub fails44+## If AUR publishes but the release fails
41 45
42-Do **not** delete or re-push the tag. Fix the GitHub workflow failure and rerun46+Do **not** delete or re-push the tag. Fix the workflow failure and rerun it
43-it (`gh run rerun <run-id> --failed`); if necessary, repair the GitHub Release47+(`ermite run rerun vev <n> --failed`); if necessary, repair the release with
44-manually with the same tag's archives and `checksums.txt`, then verify both48+`ermite release upload vev v0.X.Y <files> --clobber`, then verify both
45 publication targets before proceeding.49 publication targets before proceeding.
46 50
47 ## Version stamping51 ## Version stamping
M install.sh +4 -3
@@ -1,9 +1,10 @@
11 #!/bin/sh
22 # vev installer — Linux x86_64/arm64 and macOS arm64.
3-# Usage: curl -fsSL https://raw.githubusercontent.com/bnema/vev/main/install.sh | sh
3+# Usage: curl -fsSL https://git.bnema.dev/vev/raw/main/install.sh | sh
44 # Env: VEV_VERSION=vX.Y.Z to pin a version (default: latest release).
55 set -eu
66
7+FORGE="https://git.bnema.dev"
78 REPO="bnema/vev"
89 VERSION="${VEV_VERSION:-latest}"
910
@@ -29,7 +30,7 @@ fi
2930
3031 # --- Resolve version -------------------------------------------------------
3132 if [ "$VERSION" = "latest" ]; then
32- VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" \
33+ VERSION="$(curl -fsSL "${FORGE}/-/github/api/repos/${REPO}/releases/latest" \
3334 | grep '"tag_name"' | head -1 | cut -d '"' -f 4)"
3435 [ -n "$VERSION" ] || err "could not resolve the latest release tag"
3536 fi
@@ -39,7 +40,7 @@ info "installing vev ${VERSION} (${OS}/${ARCH}) to ${INSTALL_DIR}"
3940 TMP_DIR="$(mktemp -d)"
4041 trap 'rm -rf "$TMP_DIR"' EXIT
4142
42-BASE_URL="https://github.com/${REPO}/releases/download/${VERSION}"
43+BASE_URL="${FORGE}/vev/releases/download/${VERSION}"
4344 curl -fsSL -o "$TMP_DIR/$TARBALL" "$BASE_URL/$TARBALL" \
4445 || err "download failed: $BASE_URL/$TARBALL"
4546 curl -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/checksums.txt" \
@@ -1,9 +1,10 @@
1 #!/bin/sh1 #!/bin/sh
2 # vev installer — Linux x86_64/arm64 and macOS arm64.2 # vev installer — Linux x86_64/arm64 and macOS arm64.
3-# Usage: curl -fsSL https://raw.githubusercontent.com/bnema/vev/main/install.sh | sh3+# Usage: curl -fsSL https://git.bnema.dev/vev/raw/main/install.sh | sh
4 # Env: VEV_VERSION=vX.Y.Z to pin a version (default: latest release).4 # Env: VEV_VERSION=vX.Y.Z to pin a version (default: latest release).
5 set -eu5 set -eu
6 6
7+FORGE="https://git.bnema.dev"
7 REPO="bnema/vev"8 REPO="bnema/vev"
8 VERSION="${VEV_VERSION:-latest}"9 VERSION="${VEV_VERSION:-latest}"
9 10
@@ -29,7 +30,7 @@ fi
29 30
30 # --- Resolve version -------------------------------------------------------31 # --- Resolve version -------------------------------------------------------
31 if [ "$VERSION" = "latest" ]; then32 if [ "$VERSION" = "latest" ]; then
32- VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" \33+ VERSION="$(curl -fsSL "${FORGE}/-/github/api/repos/${REPO}/releases/latest" \
33 | grep '"tag_name"' | head -1 | cut -d '"' -f 4)"34 | grep '"tag_name"' | head -1 | cut -d '"' -f 4)"
34 [ -n "$VERSION" ] || err "could not resolve the latest release tag"35 [ -n "$VERSION" ] || err "could not resolve the latest release tag"
35 fi36 fi
@@ -39,7 +40,7 @@ info "installing vev ${VERSION} (${OS}/${ARCH}) to ${INSTALL_DIR}"
39 TMP_DIR="$(mktemp -d)"40 TMP_DIR="$(mktemp -d)"
40 trap 'rm -rf "$TMP_DIR"' EXIT41 trap 'rm -rf "$TMP_DIR"' EXIT
41 42
42-BASE_URL="https://github.com/${REPO}/releases/download/${VERSION}"43+BASE_URL="${FORGE}/vev/releases/download/${VERSION}"
43 curl -fsSL -o "$TMP_DIR/$TARBALL" "$BASE_URL/$TARBALL" \44 curl -fsSL -o "$TMP_DIR/$TARBALL" "$BASE_URL/$TARBALL" \
44 || err "download failed: $BASE_URL/$TARBALL"45 || err "download failed: $BASE_URL/$TARBALL"
45 curl -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/checksums.txt" \46 curl -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/checksums.txt" \
M scripts/install_platform_test.sh +1 -1
@@ -43,7 +43,7 @@ assert_mapping() {
4343 fail "$os/$arch unexpectedly completed installation"
4444 fi
4545
46- expected_url="https://github.com/bnema/vev/releases/download/v0.0.0/$tarball"
46+ expected_url="https://git.bnema.dev/vev/releases/download/v0.0.0/$tarball"
4747 [ -f "$curl_log" ] || fail "$os/$arch did not attempt a download"
4848 grep -F "$expected_url" "$curl_log" >/dev/null \
4949 || fail "$os/$arch did not select $tarball"
@@ -43,7 +43,7 @@ assert_mapping() {
43 fail "$os/$arch unexpectedly completed installation"43 fail "$os/$arch unexpectedly completed installation"
44 fi44 fi
45 45
46- expected_url="https://github.com/bnema/vev/releases/download/v0.0.0/$tarball"46+ expected_url="https://git.bnema.dev/vev/releases/download/v0.0.0/$tarball"
47 [ -f "$curl_log" ] || fail "$os/$arch did not attempt a download"47 [ -f "$curl_log" ] || fail "$os/$arch did not attempt a download"
48 grep -F "$expected_url" "$curl_log" >/dev/null \48 grep -F "$expected_url" "$curl_log" >/dev/null \
49 || fail "$os/$arch did not select $tarball"49 || fail "$os/$arch did not select $tarball"

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 12

Tags 11

↑↓ moveenter openesc close