bots-garden/mini-mepublic Fork
⑂ 1dcda5a
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

🛟 Updated.

k33g committed 2026-11-07T10:18:42+01:00 Browse files
1dcda5a parent: 04a9101
modified docs/en/reference/cli.md +1 -1
@@ -40,7 +40,7 @@ mm v0.1.7 (go1.26.5, darwin/arm64)
4040
4141 | Where it comes from | What you see |
4242 |---|---|
43-| A release binary, stamped at build time by `local-ci-2-build.sh` | The tag: `v0.1.7` |
43+| A release binary, stamped at build time by `local-ci-02-build.sh` | The tag: `v0.1.7` |
4444 | `go install`ed from a tagged version | That tag |
4545 | Built by hand from a working tree (`go build`, `./install.sh`) | The short commit, `9073268`, with `+dirty` when the tree had uncommitted changes |
4646 | Built with `-buildvcs=false` | `unknown` |
@@ -40,7 +40,7 @@ mm v0.1.7 (go1.26.5, darwin/arm64)
40 40
41 | Where it comes from | What you see |41 | Where it comes from | What you see |
42 |---|---|42 |---|---|
43-| A release binary, stamped at build time by `local-ci-2-build.sh` | The tag: `v0.1.7` |43+| A release binary, stamped at build time by `local-ci-02-build.sh` | The tag: `v0.1.7` |
44 | `go install`ed from a tagged version | That tag |44 | `go install`ed from a tagged version | That tag |
45 | Built by hand from a working tree (`go build`, `./install.sh`) | The short commit, `9073268`, with `+dirty` when the tree had uncommitted changes |45 | Built by hand from a working tree (`go build`, `./install.sh`) | The short commit, `9073268`, with `+dirty` when the tree had uncommitted changes |
46 | Built with `-buildvcs=false` | `unknown` |46 | Built with `-buildvcs=false` | `unknown` |
modified docs/fr/reference/cli.md +1 -1
@@ -40,7 +40,7 @@ mm v0.1.7 (go1.26.5, darwin/arm64)
4040
4141 | D'où elle vient | Ce que vous voyez |
4242 |---|---|
43-| Un binaire de release, estampillé à la construction par `local-ci-2-build.sh` | Le tag : `v0.1.7` |
43+| Un binaire de release, estampillé à la construction par `local-ci-02-build.sh` | Le tag : `v0.1.7` |
4444 | Installé par `go install` depuis une version taguée | Ce tag |
4545 | Construit à la main depuis un arbre de travail (`go build`, `./install.sh`) | Le commit court, `9073268`, suivi de `+dirty` si l'arbre avait des modifications non validées |
4646 | Construit avec `-buildvcs=false` | `unknown` |
@@ -40,7 +40,7 @@ mm v0.1.7 (go1.26.5, darwin/arm64)
40 40
41 | D'où elle vient | Ce que vous voyez |41 | D'où elle vient | Ce que vous voyez |
42 |---|---|42 |---|---|
43-| Un binaire de release, estampillé à la construction par `local-ci-2-build.sh` | Le tag : `v0.1.7` |43+| Un binaire de release, estampillé à la construction par `local-ci-02-build.sh` | Le tag : `v0.1.7` |
44 | Installé par `go install` depuis une version taguée | Ce tag |44 | Installé par `go install` depuis une version taguée | Ce tag |
45 | Construit à la main depuis un arbre de travail (`go build`, `./install.sh`) | Le commit court, `9073268`, suivi de `+dirty` si l'arbre avait des modifications non validées |45 | Construit à la main depuis un arbre de travail (`go build`, `./install.sh`) | Le commit court, `9073268`, suivi de `+dirty` si l'arbre avait des modifications non validées |
46 | Construit avec `-buildvcs=false` | `unknown` |46 | Construit avec `-buildvcs=false` | `unknown` |
modified internal/lsp/lsp_test.go +7 -1
@@ -178,7 +178,13 @@ const program = "package main\n\nfunc hello() {}\n\nfunc main() {\n\thello()\n}\
178178 // newClient returns a client over the fake, on a project holding main.go.
179179 func newClient(t *testing.T, fake *fakeServer) (*Client, string) {
180180 t.Helper()
181- root := t.TempDir()
181+ // EvalSymlinks: on macOS t.TempDir is under /var, a symlink to /private/var.
182+ // After the Chdir below, os.Getwd gives the real path, and mm would see files
183+ // outside a root written the other way.
184+ root, err := filepath.EvalSymlinks(t.TempDir())
185+ if err != nil {
186+ t.Fatal(err)
187+ }
182188 if err := os.WriteFile(filepath.Join(root, "main.go"), []byte(program), 0o644); err != nil {
183189 t.Fatal(err)
184190 }
@@ -178,7 +178,13 @@ const program = "package main\n\nfunc hello() {}\n\nfunc main() {\n\thello()\n}\
178 // newClient returns a client over the fake, on a project holding main.go.178 // newClient returns a client over the fake, on a project holding main.go.
179 func newClient(t *testing.T, fake *fakeServer) (*Client, string) {179 func newClient(t *testing.T, fake *fakeServer) (*Client, string) {
180 t.Helper()180 t.Helper()
181- root := t.TempDir()181+ // EvalSymlinks: on macOS t.TempDir is under /var, a symlink to /private/var.
182+ // After the Chdir below, os.Getwd gives the real path, and mm would see files
183+ // outside a root written the other way.
184+ root, err := filepath.EvalSymlinks(t.TempDir())
185+ if err != nil {
186+ t.Fatal(err)
187+ }
182 if err := os.WriteFile(filepath.Join(root, "main.go"), []byte(program), 0o644); err != nil {188 if err := os.WriteFile(filepath.Join(root, "main.go"), []byte(program), 0o644); err != nil {
183 t.Fatal(err)189 t.Fatal(err)
184 }190 }
added internal/tui/detach_other_test.go +9 -0
new file mode 100644
@@ -0,0 +1,9 @@
1+//go:build !unix
2+
3+package tui
4+
5+import "os/exec"
6+
7+// detachFromTerminal does nothing where there is no controlling terminal to
8+// leave.
9+func detachFromTerminal(*exec.Cmd) {}
new file mode 100644
@@ -0,0 +1,9 @@
1+//go:build !unix
2+
3+package tui
4+
5+import "os/exec"
6+
7+// detachFromTerminal does nothing where there is no controlling terminal to
8+// leave.
9+func detachFromTerminal(*exec.Cmd) {}
added internal/tui/detach_unix_test.go +15 -0
new file mode 100644
@@ -0,0 +1,15 @@
1+//go:build unix
2+
3+package tui
4+
5+import (
6+ "os/exec"
7+ "syscall"
8+)
9+
10+// detachFromTerminal starts cmd in a session of its own, without a controlling
11+// terminal. An interactive zsh opens /dev/tty otherwise: its prompt lands in
12+// the terminal running the tests, and it waits there for keystrokes.
13+func detachFromTerminal(cmd *exec.Cmd) {
14+ cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
15+}
new file mode 100644
@@ -0,0 +1,15 @@
1+//go:build unix
2+
3+package tui
4+
5+import (
6+ "os/exec"
7+ "syscall"
8+)
9+
10+// detachFromTerminal starts cmd in a session of its own, without a controlling
11+// terminal. An interactive zsh opens /dev/tty otherwise: its prompt lands in
12+// the terminal running the tests, and it waits there for keystrokes.
13+func detachFromTerminal(cmd *exec.Cmd) {
14+ cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
15+}
modified internal/tui/shell_test.go +2 -0
@@ -194,6 +194,7 @@ func TestPromptLaunchInRealShells(t *testing.T) {
194194 cmd := exec.Command(path, append(l.args, "-i")...)
195195 cmd.Env = append(os.Environ(), l.env...)
196196 cmd.Stdin = strings.NewReader(`echo "[$PS1][$RC_RAN][$MM_SHELL]"` + "\nexit\n")
197+ detachFromTerminal(cmd)
197198 out, err := cmd.Output()
198199 cleanup()
199200 if err != nil {
@@ -230,6 +231,7 @@ func TestPromptLaunchInFish(t *testing.T) {
230231 l, cleanup := prepareLaunch(path)
231232 defer cleanup()
232233 cmd := exec.Command(path, append(l.args, "-c", `fish_prompt; echo "[$MM_SHELL]"`)...)
234+ detachFromTerminal(cmd)
233235 cmd.Env = append(os.Environ(), l.env...)
234236 out, err := cmd.Output()
235237 if err != nil {
@@ -194,6 +194,7 @@ func TestPromptLaunchInRealShells(t *testing.T) {
194 cmd := exec.Command(path, append(l.args, "-i")...)194 cmd := exec.Command(path, append(l.args, "-i")...)
195 cmd.Env = append(os.Environ(), l.env...)195 cmd.Env = append(os.Environ(), l.env...)
196 cmd.Stdin = strings.NewReader(`echo "[$PS1][$RC_RAN][$MM_SHELL]"` + "\nexit\n")196 cmd.Stdin = strings.NewReader(`echo "[$PS1][$RC_RAN][$MM_SHELL]"` + "\nexit\n")
197+ detachFromTerminal(cmd)
197 out, err := cmd.Output()198 out, err := cmd.Output()
198 cleanup()199 cleanup()
199 if err != nil {200 if err != nil {
@@ -230,6 +231,7 @@ func TestPromptLaunchInFish(t *testing.T) {
230 l, cleanup := prepareLaunch(path)231 l, cleanup := prepareLaunch(path)
231 defer cleanup()232 defer cleanup()
232 cmd := exec.Command(path, append(l.args, "-c", `fish_prompt; echo "[$MM_SHELL]"`)...)233 cmd := exec.Command(path, append(l.args, "-c", `fish_prompt; echo "[$MM_SHELL]"`)...)
234+ detachFromTerminal(cmd)
233 cmd.Env = append(os.Environ(), l.env...)235 cmd.Env = append(os.Environ(), l.env...)
234 out, err := cmd.Output()236 out, err := cmd.Output()
235 if err != nil {237 if err != nil {
modified internal/version/version.go +1 -1
@@ -4,7 +4,7 @@
44 // question without anyone having to remember a step:
55 //
66 // 1. A release binary carries its tag, stamped at link time by
7-// local-ci-2-build.sh:
7+// local-ci-02-build.sh:
88 //
99 // go build -ldflags "-X mm/internal/version.stamped=v0.0.3"
1010 //
@@ -4,7 +4,7 @@
4 // question without anyone having to remember a step:4 // question without anyone having to remember a step:
5 //5 //
6 // 1. A release binary carries its tag, stamped at link time by6 // 1. A release binary carries its tag, stamped at link time by
7-// local-ci-2-build.sh:7+// local-ci-02-build.sh:
8 //8 //
9 // go build -ldflags "-X mm/internal/version.stamped=v0.0.3"9 // go build -ldflags "-X mm/internal/version.stamped=v0.0.3"
10 //10 //
renamed local-ci-00-common.sh +7 -7
similarity index 81%
rename from local-ci-0-common.sh
rename to local-ci-00-common.sh
@@ -1,14 +1,14 @@
11 #!/usr/bin/env bash
2-# local-ci-0-common.sh — what the local-ci-*.sh steps share. Sourced, not run.
2+# local-ci-00-common.sh — what the local-ci-*.sh steps share. Sourced, not run.
33 #
44 # The steps, in order:
5-# ./local-ci-1-check.sh gofmt, vet, tests
6-# ./local-ci-2-build.sh the binaries, in release/<TAG>/
7-# ./local-ci-3-create-draft.sh the tag and a draft prerelease
8-# ./local-ci-4-upload.sh the binaries, through a temporary branch
9-# ./local-ci-5-publish.sh the draft becomes public; asks first
5+# ./local-ci-01-check.sh gofmt, vet, tests
6+# ./local-ci-02-build.sh the binaries, in release/<TAG>/
7+# ./local-ci-03-create-draft.sh the tag and a draft prerelease
8+# ./local-ci-04-upload.sh the binaries, through a temporary branch
9+# ./local-ci-05-publish.sh the draft becomes public; asks first
1010 #
11-# Tests only: ./local-ci-9-remove-test-release.sh
11+# Tests only: ./local-ci-09-remove-test-release.sh
1212 #
1313 # Reads TAG, ABOUT, OWNER and REPO from .release.env, and CI_TOKEN from
1414 # .ci.cd.token.env. The token never reaches argv: curl and git read it from
similarity index 81%
rename from local-ci-0-common.sh
rename to local-ci-00-common.sh
@@ -1,14 +1,14 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-0-common.sh — what the local-ci-*.sh steps share. Sourced, not run.2+# local-ci-00-common.sh — what the local-ci-*.sh steps share. Sourced, not run.
3 #3 #
4 # The steps, in order:4 # The steps, in order:
5-# ./local-ci-1-check.sh gofmt, vet, tests5+# ./local-ci-01-check.sh gofmt, vet, tests
6-# ./local-ci-2-build.sh the binaries, in release/<TAG>/6+# ./local-ci-02-build.sh the binaries, in release/<TAG>/
7-# ./local-ci-3-create-draft.sh the tag and a draft prerelease7+# ./local-ci-03-create-draft.sh the tag and a draft prerelease
8-# ./local-ci-4-upload.sh the binaries, through a temporary branch8+# ./local-ci-04-upload.sh the binaries, through a temporary branch
9-# ./local-ci-5-publish.sh the draft becomes public; asks first9+# ./local-ci-05-publish.sh the draft becomes public; asks first
10 #10 #
11-# Tests only: ./local-ci-9-remove-test-release.sh11+# Tests only: ./local-ci-09-remove-test-release.sh
12 #12 #
13 # Reads TAG, ABOUT, OWNER and REPO from .release.env, and CI_TOKEN from13 # Reads TAG, ABOUT, OWNER and REPO from .release.env, and CI_TOKEN from
14 # .ci.cd.token.env. The token never reaches argv: curl and git read it from14 # .ci.cd.token.env. The token never reaches argv: curl and git read it from
renamed local-ci-01-check.sh +2 -2
similarity index 85%
rename from local-ci-1-check.sh
rename to local-ci-01-check.sh
@@ -1,6 +1,6 @@
11 #!/usr/bin/env bash
2-# local-ci-1-check.sh — gofmt, vet and tests.
3-source "$(dirname "$0")/local-ci-0-common.sh"
2+# local-ci-01-check.sh — gofmt, vet and tests.
3+source "$(dirname "$0")/local-ci-00-common.sh"
44
55 echo "==> gofmt"
66 # The files on disk, not git's index: a folder moved but not yet staged is still
similarity index 85%
rename from local-ci-1-check.sh
rename to local-ci-01-check.sh
@@ -1,6 +1,6 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-1-check.sh — gofmt, vet and tests.2+# local-ci-01-check.sh — gofmt, vet and tests.
3-source "$(dirname "$0")/local-ci-0-common.sh"3+source "$(dirname "$0")/local-ci-00-common.sh"
4 4
5 echo "==> gofmt"5 echo "==> gofmt"
6 # The files on disk, not git's index: a folder moved but not yet staged is still6 # The files on disk, not git's index: a folder moved but not yet staged is still
renamed local-ci-02-build.sh +2 -2
similarity index 97%
rename from local-ci-2-build.sh
rename to local-ci-02-build.sh
@@ -1,5 +1,5 @@
11 #!/usr/bin/env bash
2-# local-ci-2-build.sh — the binaries for every platform, in release/<TAG>/.
2+# local-ci-02-build.sh — the binaries for every platform, in release/<TAG>/.
33 #
44 # Only the Go toolchain is needed: every binary is a plain `go build`.
55 #
@@ -7,7 +7,7 @@
77 # mm-<version>-<os>-<arch>[.exe] one binary per platform
88 # SHA256SUMS checksums of the binaries
99 # README.md download table + how to run
10-source "$(dirname "$0")/local-ci-0-common.sh"
10+source "$(dirname "$0")/local-ci-00-common.sh"
1111
1212 ABOUT="${ABOUT:-Mini Me ${TAG}}"
1313
similarity index 97%
rename from local-ci-2-build.sh
rename to local-ci-02-build.sh
@@ -1,5 +1,5 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-2-build.sh — the binaries for every platform, in release/<TAG>/.2+# local-ci-02-build.sh — the binaries for every platform, in release/<TAG>/.
3 #3 #
4 # Only the Go toolchain is needed: every binary is a plain `go build`.4 # Only the Go toolchain is needed: every binary is a plain `go build`.
5 #5 #
@@ -7,7 +7,7 @@
7 # mm-<version>-<os>-<arch>[.exe] one binary per platform7 # mm-<version>-<os>-<arch>[.exe] one binary per platform
8 # SHA256SUMS checksums of the binaries8 # SHA256SUMS checksums of the binaries
9 # README.md download table + how to run9 # README.md download table + how to run
10-source "$(dirname "$0")/local-ci-0-common.sh"10+source "$(dirname "$0")/local-ci-00-common.sh"
11 11
12 ABOUT="${ABOUT:-Mini Me ${TAG}}"12 ABOUT="${ABOUT:-Mini Me ${TAG}}"
13 13
renamed local-ci-03-create-draft.sh +3 -3
similarity index 91%
rename from local-ci-3-create-draft.sh
rename to local-ci-03-create-draft.sh
@@ -1,12 +1,12 @@
11 #!/usr/bin/env bash
2-# local-ci-3-create-draft.sh — the tag and a draft prerelease on Rickub.
2+# local-ci-03-create-draft.sh — the tag and a draft prerelease on Rickub.
33 #
44 # Refuses when the binaries would not be what the tag names: the working tree
55 # must be clean and HEAD must be on the remote's main.
6-source "$(dirname "$0")/local-ci-0-common.sh"
6+source "$(dirname "$0")/local-ci-00-common.sh"
77 load_token
88
9-[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-2-build.sh"; exit 2; }
9+[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-02-build.sh"; exit 2; }
1010
1111 head_sha="$(git rev-parse HEAD)"
1212 if [ -z "${LOCAL_CI_SKIP_GIT_CHECK:-}" ]; then
similarity index 91%
rename from local-ci-3-create-draft.sh
rename to local-ci-03-create-draft.sh
@@ -1,12 +1,12 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-3-create-draft.sh — the tag and a draft prerelease on Rickub.2+# local-ci-03-create-draft.sh — the tag and a draft prerelease on Rickub.
3 #3 #
4 # Refuses when the binaries would not be what the tag names: the working tree4 # Refuses when the binaries would not be what the tag names: the working tree
5 # must be clean and HEAD must be on the remote's main.5 # must be clean and HEAD must be on the remote's main.
6-source "$(dirname "$0")/local-ci-0-common.sh"6+source "$(dirname "$0")/local-ci-00-common.sh"
7 load_token7 load_token
8 8
9-[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-2-build.sh"; exit 2; }9+[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-02-build.sh"; exit 2; }
10 10
11 head_sha="$(git rev-parse HEAD)"11 head_sha="$(git rev-parse HEAD)"
12 if [ -z "${LOCAL_CI_SKIP_GIT_CHECK:-}" ]; then12 if [ -z "${LOCAL_CI_SKIP_GIT_CHECK:-}" ]; then
renamed local-ci-04-upload.sh +4 -4
similarity index 94%
rename from local-ci-4-upload.sh
rename to local-ci-04-upload.sh
@@ -1,11 +1,11 @@
11 #!/usr/bin/env bash
2-# local-ci-4-upload.sh — the binaries of release/<TAG>/ onto the draft.
2+# local-ci-04-upload.sh — the binaries of release/<TAG>/ onto the draft.
33 #
44 # Rickub only accepts uploads from the token of a CI job. So this pushes a
55 # temporary orphan branch holding the binaries and a one-job workflow, waits for
66 # the job, and deletes the branch, whatever happened. The local checkout is
77 # never touched.
8-source "$(dirname "$0")/local-ci-0-common.sh"
8+source "$(dirname "$0")/local-ci-00-common.sh"
99 load_token
1010
1111 branch="local-ci-publish-${TAG}"
@@ -22,8 +22,8 @@ remove_branch() {
2222 }
2323 trap remove_branch EXIT
2424
25-[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-2-build.sh"; exit 2; }
26-[ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is not a draft: run local-ci-3-create-draft.sh"; exit 1; }
25+[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-02-build.sh"; exit 2; }
26+[ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is not a draft: run local-ci-03-create-draft.sh"; exit 1; }
2727
2828 echo "==> preparing the temporary branch"
2929 git init -q -b "${branch}" "${work}/branch"
similarity index 94%
rename from local-ci-4-upload.sh
rename to local-ci-04-upload.sh
@@ -1,11 +1,11 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-4-upload.sh — the binaries of release/<TAG>/ onto the draft.2+# local-ci-04-upload.sh — the binaries of release/<TAG>/ onto the draft.
3 #3 #
4 # Rickub only accepts uploads from the token of a CI job. So this pushes a4 # Rickub only accepts uploads from the token of a CI job. So this pushes a
5 # temporary orphan branch holding the binaries and a one-job workflow, waits for5 # temporary orphan branch holding the binaries and a one-job workflow, waits for
6 # the job, and deletes the branch, whatever happened. The local checkout is6 # the job, and deletes the branch, whatever happened. The local checkout is
7 # never touched.7 # never touched.
8-source "$(dirname "$0")/local-ci-0-common.sh"8+source "$(dirname "$0")/local-ci-00-common.sh"
9 load_token9 load_token
10 10
11 branch="local-ci-publish-${TAG}"11 branch="local-ci-publish-${TAG}"
@@ -22,8 +22,8 @@ remove_branch() {
22 }22 }
23 trap remove_branch EXIT23 trap remove_branch EXIT
24 24
25-[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-2-build.sh"; exit 2; }25+[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-02-build.sh"; exit 2; }
26-[ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is not a draft: run local-ci-3-create-draft.sh"; exit 1; }26+[ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is not a draft: run local-ci-03-create-draft.sh"; exit 1; }
27 27
28 echo "==> preparing the temporary branch"28 echo "==> preparing the temporary branch"
29 git init -q -b "${branch}" "${work}/branch"29 git init -q -b "${branch}" "${work}/branch"
renamed local-ci-05-publish.sh +4 -4
similarity index 85%
rename from local-ci-5-publish.sh
rename to local-ci-05-publish.sh
@@ -1,15 +1,15 @@
11 #!/usr/bin/env bash
2-# local-ci-5-publish.sh — the draft becomes public, as a prerelease.
2+# local-ci-05-publish.sh — the draft becomes public, as a prerelease.
33 #
44 # On Rickub a published prerelease becomes /releases/latest, so everybody who
55 # downloads the latest version gets this one. It asks you to type the tag first,
66 # then downloads what is public and compares it with release/<TAG>/.
7-source "$(dirname "$0")/local-ci-0-common.sh"
7+source "$(dirname "$0")/local-ci-00-common.sh"
88 load_token
99
10-[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-2-build.sh"; exit 2; }
10+[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-02-build.sh"; exit 2; }
1111 id="$(release_field id)"
12-[ -n "${id}" ] || { echo "❌ no release ${TAG}: run local-ci-3-create-draft.sh"; exit 1; }
12+[ -n "${id}" ] || { echo "❌ no release ${TAG}: run local-ci-03-create-draft.sh"; exit 1; }
1313 [ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is already public"; exit 1; }
1414
1515 echo "/releases/latest is now: $(latest_location)"
similarity index 85%
rename from local-ci-5-publish.sh
rename to local-ci-05-publish.sh
@@ -1,15 +1,15 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-5-publish.sh — the draft becomes public, as a prerelease.2+# local-ci-05-publish.sh — the draft becomes public, as a prerelease.
3 #3 #
4 # On Rickub a published prerelease becomes /releases/latest, so everybody who4 # On Rickub a published prerelease becomes /releases/latest, so everybody who
5 # downloads the latest version gets this one. It asks you to type the tag first,5 # downloads the latest version gets this one. It asks you to type the tag first,
6 # then downloads what is public and compares it with release/<TAG>/.6 # then downloads what is public and compares it with release/<TAG>/.
7-source "$(dirname "$0")/local-ci-0-common.sh"7+source "$(dirname "$0")/local-ci-00-common.sh"
8 load_token8 load_token
9 9
10-[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-2-build.sh"; exit 2; }10+[ -f "${assets_dir}/SHA256SUMS" ] || { echo "❌ no ${assets_dir}/SHA256SUMS: run local-ci-02-build.sh"; exit 2; }
11 id="$(release_field id)"11 id="$(release_field id)"
12-[ -n "${id}" ] || { echo "❌ no release ${TAG}: run local-ci-3-create-draft.sh"; exit 1; }12+[ -n "${id}" ] || { echo "❌ no release ${TAG}: run local-ci-03-create-draft.sh"; exit 1; }
13 [ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is already public"; exit 1; }13 [ "$(release_field draft)" = "true" ] || { echo "❌ ${TAG} is already public"; exit 1; }
14 14
15 echo "/releases/latest is now: $(latest_location)"15 echo "/releases/latest is now: $(latest_location)"
renamed local-ci-09-remove-test-release.sh +4 -4
similarity index 70%
rename from local-ci-9-remove-test-release.sh
rename to local-ci-09-remove-test-release.sh
@@ -1,13 +1,13 @@
11 #!/usr/bin/env bash
2-# local-ci-9-remove-test-release.sh — delete a test release, for v9.9.9 and
2+# local-ci-09-remove-test-release.sh — delete a test release, for v9.9.9 and
33 # demo-* only: this must never reach a real one.
44 #
5-# ./local-ci-9-remove-test-release.sh # the TAG of .release.env
6-# ./local-ci-9-remove-test-release.sh demo-002
5+# ./local-ci-09-remove-test-release.sh # the TAG of .release.env
6+# ./local-ci-09-remove-test-release.sh demo-002
77 #
88 # The tag stays: Rickub refuses to delete one by push, and the API has no route
99 # for it. Delete it from the repository's Tags page.
10-source "$(dirname "$0")/local-ci-0-common.sh"
10+source "$(dirname "$0")/local-ci-00-common.sh"
1111 load_token
1212
1313 TAG="${1:-${TAG}}"
similarity index 70%
rename from local-ci-9-remove-test-release.sh
rename to local-ci-09-remove-test-release.sh
@@ -1,13 +1,13 @@
1 #!/usr/bin/env bash1 #!/usr/bin/env bash
2-# local-ci-9-remove-test-release.sh — delete a test release, for v9.9.9 and2+# local-ci-09-remove-test-release.sh — delete a test release, for v9.9.9 and
3 # demo-* only: this must never reach a real one.3 # demo-* only: this must never reach a real one.
4 #4 #
5-# ./local-ci-9-remove-test-release.sh # the TAG of .release.env5+# ./local-ci-09-remove-test-release.sh # the TAG of .release.env
6-# ./local-ci-9-remove-test-release.sh demo-0026+# ./local-ci-09-remove-test-release.sh demo-002
7 #7 #
8 # The tag stays: Rickub refuses to delete one by push, and the API has no route8 # The tag stays: Rickub refuses to delete one by push, and the API has no route
9 # for it. Delete it from the repository's Tags page.9 # for it. Delete it from the repository's Tags page.
10-source "$(dirname "$0")/local-ci-0-common.sh"10+source "$(dirname "$0")/local-ci-00-common.sh"
11 load_token11 load_token
12 12
13 TAG="${1:-${TAG}}"13 TAG="${1:-${TAG}}"
added release-notes/v9.9.9.en.md +7 -0
new file mode 100644
@@ -0,0 +1,7 @@
1+# mini-me v9.9.9
2+
3+*[Version française](v9.9.9.fr.md)*
4+
5+**A test release, not a real version.** It checks the local release pipeline (`local-ci-*.sh`): binaries built on a local machine, uploaded through a temporary branch, published as a prerelease. It will be deleted once the test is over.
6+
7+Do not install it: use the latest real release from the [releases page](https://rickub.com/bots-garden/mini-me/releases).
new file mode 100644
@@ -0,0 +1,7 @@
1+# mini-me v9.9.9
2+
3+*[Version française](v9.9.9.fr.md)*
4+
5+**A test release, not a real version.** It checks the local release pipeline (`local-ci-*.sh`): binaries built on a local machine, uploaded through a temporary branch, published as a prerelease. It will be deleted once the test is over.
6+
7+Do not install it: use the latest real release from the [releases page](https://rickub.com/bots-garden/mini-me/releases).
added release-notes/v9.9.9.fr.md +7 -0
new file mode 100644
@@ -0,0 +1,7 @@
1+# mini-me v9.9.9
2+
3+*[English version](v9.9.9.en.md)*
4+
5+**Une release de test, pas une vraie version.** Elle vérifie la chaîne de publication locale (`local-ci-*.sh`) : binaires construits sur une machine locale, envoyés par une branche temporaire, publiés en prerelease. Elle sera supprimée à la fin du test.
6+
7+Ne l'installez pas : utilisez la dernière vraie release depuis la [page des releases](https://rickub.com/bots-garden/mini-me/releases).
new file mode 100644
@@ -0,0 +1,7 @@
1+# mini-me v9.9.9
2+
3+*[English version](v9.9.9.en.md)*
4+
5+**Une release de test, pas une vraie version.** Elle vérifie la chaîne de publication locale (`local-ci-*.sh`) : binaires construits sur une machine locale, envoyés par une branche temporaire, publiés en prerelease. Elle sera supprimée à la fin du test.
6+
7+Ne l'installez pas : utilisez la dernière vraie release depuis la [page des releases](https://rickub.com/bots-garden/mini-me/releases).