Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package arkade for openSUSE:Factory checked in at 2026-10-27 16:50:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/arkade (Old) and /work/SRC/openSUSE:Factory/.arkade.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "arkade" Tue Oct 27 16:50:59 2026 rev:97 rq:1392906 version:0.11.134 Changes: -------- --- /work/SRC/openSUSE:Factory/arkade/arkade.changes 2026-10-23 20:31:43.566200661 +0200 +++ /work/SRC/openSUSE:Factory/.arkade.new.2252680/arkade.changes 2026-10-27 16:51:20.495469237 +0100 @@ -1,0 +2,6 @@ +Sat Oct 24 16:51:27 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 0.11.134: + * Check tags before creating initial releases + +------------------------------------------------------------------- Old: ---- arkade-0.11.133.obscpio New: ---- arkade-0.11.134.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ arkade.spec ++++++ --- /var/tmp/diff_new_pack.EHfaUt/_old 2026-10-27 16:51:23.122579225 +0100 +++ /var/tmp/diff_new_pack.EHfaUt/_new 2026-10-27 16:51:23.123579267 +0100 @@ -17,7 +17,7 @@ Name: arkade -Version: 0.11.133 +Version: 0.11.134 Release: 0 Summary: Open Source Kubernetes Marketplace License: Apache-2.0 @@ -30,8 +30,8 @@ Source12: PACKAGING_README.md Source13: vendor_go_modules.sh BuildRequires: bash-completion -BuildRequires: zsh BuildRequires: golang(API) >= 1.27 +BuildRequires: zsh %description arkade provides a portable marketplace for downloading your favourite devops @@ -41,7 +41,6 @@ %package -n %{name}-bash-completion Summary: Bash Completion for %{name} -Group: System/Shells Requires: %{name} = %{version} Requires: bash-completion Supplements: (%{name} and bash-completion) @@ -52,7 +51,6 @@ %package -n %{name}-zsh-completion Summary: Zsh Completion for %{name} -Group: System/Shells Requires: %{name} = %{version} Supplements: (%{name} and zsh) BuildArch: noarch @@ -66,7 +64,7 @@ %build # hash will be shortened by COMMIT_HASH:0:8 later -COMMIT_HASH="$(sed -n 's/commit: \(.*\)/\1/p' %_sourcedir/%{name}.obsinfo)" +COMMIT_HASH="$(sed -n 's/commit: \(.*\)/\1/p' %{_sourcedir}/%{name}.obsinfo)" go build \ -mod=vendor \ @@ -89,7 +87,7 @@ %{buildroot}/%{_bindir}/%{name} completion zsh > %{buildroot}%{_datarootdir}/zsh/site-functions/_%{name} %check -COMMIT_HASH="$(sed -n 's/commit: \(.*\)/\1/p' %_sourcedir/%{name}.obsinfo)" +COMMIT_HASH="$(sed -n 's/commit: \(.*\)/\1/p' %{_sourcedir}/%{name}.obsinfo)" %{buildroot}/%{_bindir}/%{name} version | grep v%{version} %{buildroot}/%{_bindir}/%{name} version | grep "${COMMIT_HASH:0:8}" ++++++ _service ++++++ --- /var/tmp/diff_new_pack.EHfaUt/_old 2026-10-27 16:51:23.211582952 +0100 +++ /var/tmp/diff_new_pack.EHfaUt/_new 2026-10-27 16:51:23.221583370 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/alexellis/arkade.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">refs/tags/0.11.133</param> + <param name="revision">refs/tags/0.11.134</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.EHfaUt/_old 2026-10-27 16:51:23.272585506 +0100 +++ /var/tmp/diff_new_pack.EHfaUt/_new 2026-10-27 16:51:23.284586008 +0100 @@ -3,6 +3,6 @@ <param name="url">https://github.com/alexellis/arkade</param> <param name="changesrevision">37af31c7b58de8f16a10067051e3bbe7ecb6aa79</param></service><service name="tar_scm"> <param name="url">https://github.com/alexellis/arkade.git</param> - <param name="changesrevision">0b5a95c8ff1ffcad42f9e6d22fe1268ed2e5d2fe</param></service></servicedata> + <param name="changesrevision">8acb4741409717fc99fb8fb4e4a1ecf30d61c05e</param></service></servicedata> (No newline at EOF) ++++++ arkade-0.11.133.obscpio -> arkade-0.11.134.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/CODEOWNERS new/arkade-0.11.134/.github/CODEOWNERS --- old/arkade-0.11.133/.github/CODEOWNERS 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/CODEOWNERS 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1 @@ +@alexellis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/FUNDING.yml new/arkade-0.11.134/.github/FUNDING.yml --- old/arkade-0.11.133/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/FUNDING.yml 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1 @@ +github: alexellis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/ISSUE_TEMPLATE.md new/arkade-0.11.134/.github/ISSUE_TEMPLATE.md --- old/arkade-0.11.133/.github/ISSUE_TEMPLATE.md 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/ISSUE_TEMPLATE.md 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,57 @@ +<!--- Provide a general summary of the issue in the Title above --> + +## Expected Behaviour +<!--- If you're describing a bug, tell us what should happen --> +<!--- If you're suggesting a change/improvement, tell us how it should work --> + +## Current Behaviour +<!--- If describing a bug, tell us what happens instead of the expected behavior --> +<!--- If suggesting a change/improvement, explain the difference from current behavior --> + +## Possible Solution +<!--- Not obligatory, but suggest a fix/reason for the bug, --> +<!--- or ideas how to implement the addition or change --> + +## Steps to Reproduce (for bugs) +<!--- Provide a link to a live example, or an unambiguous set of steps to --> +<!--- reproduce this bug. Include code to reproduce, if relevant --> +1. +2. +3. +4. + +## Context + +<!--- How has this issue affected you? What are you trying to accomplish? --> +<!--- What would happen if this issue was not resolved for you in some way? --> +<!--- Providing context helps us come up with a solution that is most useful in the real world --> + +## If requesting a CLI for "arkade get" + +How many downloads does this tool have? Check at: + +https://somsubhra.github.io/github-release-stats/ + +If approved, are you willing to submit a pull request for this? + +## Your Environment + +* What Kubernetes distribution are you using? + +``` +kubectl version +``` + +* Operating System and version (e.g. Linux, Windows, MacOS): + +``` +uname -a + +cat /etc/os-release +``` + +* What arkade version is this? + +``` +arkade version +``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/PULL_REQUEST_TEMPLATE.md new/arkade-0.11.134/.github/PULL_REQUEST_TEMPLATE.md --- old/arkade-0.11.133/.github/PULL_REQUEST_TEMPLATE.md 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/PULL_REQUEST_TEMPLATE.md 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,42 @@ +<!--- Provide a general summary of your changes in the Title above --> + +## Description +<!--- Describe your changes in detail --> + +## Motivation and Context +<!--- Why is this change required? What problem does it solve? --> +<!--- If it fixes an open issue, please link to the issue here. --> +- [ ] I have raised an issue to propose this change, which has been given a label of `design/approved` by a maintainer ([required](https://github.com/alexellis/arkade/blob/master/CONTRIBUTING.md)) + + +## How Has This Been Tested? +<!--- Please describe in detail how you tested your changes. --> +<!--- Include details of your testing environment, and the tests you ran to --> +<!--- see how your change affects other areas of the code, etc. --> + +If updating or adding a new CLI to `arkade get`, run: + +``` +go build && ./hack/test-tool.sh TOOL_NAME +``` + +## Types of changes +<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to change) + +## Documentation + +- [ ] I have updated the list of tools in README.md if (required) with `./arkade get --format markdown` +- [ ] I have updated the list of apps in README.md if (required) with `./arkade install --help` + +## Checklist: +- [ ] My code follows the code style of this project. +- [ ] My change requires a change to the documentation. +- [ ] I have updated the documentation accordingly. +- [ ] I've read the [CONTRIBUTION](https://github.com/alexellis/arkade/blob/master/CONTRIBUTING.md) guide +- [ ] I have signed-off my commits with `git commit -s` + +<!--- For "arkade install" or "arkade system install" --> +- [ ] I have tested this on arm, or have added code to prevent deployment diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/dependabot.yml new/arkade-0.11.134/.github/dependabot.yml --- old/arkade-0.11.133/.github/dependabot.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/dependabot.yml 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,11 @@ +version: 2 +# reference: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/workflows/build.yml new/arkade-0.11.134/.github/workflows/build.yml --- old/arkade-0.11.133/.github/workflows/build.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/workflows/build.yml 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,27 @@ +name: build + +on: + push: + branches: + - master + pull_request: + branches: + - "*" + +jobs: + build: + concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 1 + - name: Install Go + uses: actions/setup-go@v7 + with: + go-version: 1.27.x + - name: Make all + run: make all diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/workflows/e2e-url-checker.yml new/arkade-0.11.134/.github/workflows/e2e-url-checker.yml --- old/arkade-0.11.133/.github/workflows/e2e-url-checker.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/workflows/e2e-url-checker.yml 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,26 @@ +name: e2e-url-checker + +on: + schedule: + - cron: "0 0 * * *" + push: + branches: + - master + pull_request: + branches: + - "*" + workflow_dispatch: + +jobs: + url-checker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 1 + - name: Install Go + uses: actions/setup-go@v7 + with: + go-version: 1.27.x + - name: Run URL checker tests + run: make e2e diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.github/workflows/publish.yml new/arkade-0.11.134/.github/workflows/publish.yml --- old/arkade-0.11.133/.github/workflows/publish.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.github/workflows/publish.yml 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,26 @@ +name: publish + +on: + push: + tags: + - "*" + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 1 + - name: Install Go + uses: actions/setup-go@v7 + with: + go-version: 1.27.x + - name: Make all + run: make all + - name: Upload release binaries + uses: alexellis/[email protected] + env: + GITHUB_TOKEN: ${{ github.token }} + with: + asset_paths: '["./bin/arkade*"]' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/.gitignore new/arkade-0.11.134/.gitignore --- old/arkade-0.11.133/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/.gitignore 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,13 @@ +arkade +arkade.exe +bin/** +kubeconfig +.DS_Store +.idea/ +mc +/arkade-* +/faas-cli* +test.out +docker-compose.yaml* +TOOLS.md +/.claude/settings.local.json diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/cmd/AGENTS.md new/arkade-0.11.134/cmd/AGENTS.md --- old/arkade-0.11.133/cmd/AGENTS.md 2026-10-22 17:28:47.000000000 +0200 +++ new/arkade-0.11.134/cmd/AGENTS.md 2026-10-23 15:39:10.000000000 +0200 @@ -98,12 +98,15 @@ ## Testing -There are no unit tests for this command. To verify behaviour: +Run the release regression test and verify behaviour with a dry run: ```bash # Build go build -o arkade . +# Check empty and invalid API responses, and prefixed and bare version bumps +go test ./cmd -run '^(TestReleaseTagResolution|TestBumpVersionPreservesTagStyle)$' + # Dry run in a public repo (default = patch bump) ./arkade release --dry-run # Expected: Prerelease: true, Latest: false, Bump: patch @@ -143,4 +146,4 @@ The `bumpVersion()` function handles version incrementing using the `bumpStrategy` type. It supports `bumpPatchStrategy`, `bumpMinorStrategy`, and `bumpMajorStrategy`. The user selects the strategy via `--major`, `--minor`, `--patch` flags, validated by `parseBumpStrategy()`. ### Error handling for repos with no releases -When `gh release list` returns no tags, `latestReleaseTag()` returns an error. The error message tells the user to pass a version explicitly as a positional argument. +When `gh api repos/{owner}/{repo}/releases` returns an empty list, `latestReleaseTag()` checks the repository's tags. If there are no releases or tags, the first release is `v0.0.1`. If tags exist, it returns an error rather than guessing an initial version, since an empty release list can also mean GitHub is degraded. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/cmd/release.go new/arkade-0.11.134/cmd/release.go --- old/arkade-0.11.133/cmd/release.go 2026-10-22 17:28:47.000000000 +0200 +++ new/arkade-0.11.134/cmd/release.go 2026-10-23 15:39:10.000000000 +0200 @@ -5,6 +5,7 @@ import ( "context" + "encoding/json" "fmt" "strings" @@ -29,7 +30,7 @@ matches the remote HEAD. Untracked, staged, or uncommitted changes are ignored. -The latest release tag is obtained via "gh release list", so private +The latest release tag is obtained via "gh api", so private repositories are supported when "gh" is authenticated. Version bump strategy (mutually exclusive, default is --patch): @@ -303,7 +304,7 @@ latestTag, err := latestReleaseTag(ctx) if err != nil { - return "", fmt.Errorf("could not determine latest release: %w\nUse a positional argument to set the version explicitly", err) + return "", fmt.Errorf("could not determine latest release: %w\nRetry when GitHub recovers, or pass a verified version explicitly", err) } return bumpVersion(latestTag, bump) @@ -342,7 +343,7 @@ func latestReleaseTag(ctx context.Context) (string, error) { task := execute.ExecTask{ Command: "gh", - Args: []string{"api", "repos/{owner}/{repo}/releases", "--jq", ".[0].tag_name"}, + Args: []string{"api", "repos/{owner}/{repo}/releases?per_page=1"}, } res, err := task.Execute(ctx) @@ -353,12 +354,48 @@ return "", fmt.Errorf("gh exited with code %d: %s", res.ExitCode, res.Stderr) } - tag := strings.TrimSpace(res.Stdout) - if tag == "" { - return "v0.0.0", nil + var releases []struct { + TagName string `json:"tag_name"` + } + if err := json.Unmarshal([]byte(res.Stdout), &releases); err != nil { + return "", fmt.Errorf("could not decode GitHub releases: %w", err) + } + if releases == nil { + return "", fmt.Errorf("GitHub returned a null release list") + } + if len(releases) > 0 { + if releases[0].TagName == "" { + return "", fmt.Errorf("GitHub returned a release without a tag") + } + return releases[0].TagName, nil + } + + // An empty release list is normal for a new project, but GitHub can also + // return an empty list during an incident. Check tags before choosing the + // initial version so an existing project cannot be reset to v0.0.1. + tagsTask := execute.ExecTask{ + Command: "gh", + Args: []string{"api", "repos/{owner}/{repo}/tags?per_page=1"}, + } + tagsResult, err := tagsTask.Execute(ctx) + if err != nil { + return "", fmt.Errorf("could not check repository tags: %w", err) + } + if tagsResult.ExitCode != 0 { + return "", fmt.Errorf("could not check repository tags: gh exited with code %d: %s", tagsResult.ExitCode, tagsResult.Stderr) + } + + var tags []struct { + Name string `json:"name"` + } + if err := json.Unmarshal([]byte(tagsResult.Stdout), &tags); err != nil || tags == nil { + return "", fmt.Errorf("could not read repository tags from GitHub: %q", strings.TrimSpace(tagsResult.Stdout)) + } + if len(tags) > 0 { + return "", fmt.Errorf("GitHub returned no releases, but repository tag %q exists; refusing to guess an initial version", tags[0].Name) } - return tag, nil + return "v0.0.0", nil } // bumpVersion increments the specified semver component of a tag. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/cmd/release_test.go new/arkade-0.11.134/cmd/release_test.go --- old/arkade-0.11.133/cmd/release_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/cmd/release_test.go 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,29 @@ +package cmd + +import "testing" + +func TestBumpVersionPreservesTagStyle(t *testing.T) { + for _, tc := range []struct { + name string + tag string + bump bumpStrategy + want string + }{ + {name: "prefixed patch", tag: "v1.0.4", bump: bumpPatchStrategy, want: "v1.0.5"}, + {name: "prefixed minor", tag: "v1.0.4", bump: bumpMinorStrategy, want: "v1.1.0"}, + {name: "prefixed major", tag: "v1.0.4", bump: bumpMajorStrategy, want: "v2.0.0"}, + {name: "bare patch", tag: "0.2.4", bump: bumpPatchStrategy, want: "0.2.5"}, + {name: "bare minor", tag: "0.2.4", bump: bumpMinorStrategy, want: "0.3.0"}, + {name: "bare major", tag: "0.2.4", bump: bumpMajorStrategy, want: "1.0.0"}, + } { + t.Run(tc.name, func(t *testing.T) { + got, err := bumpVersion(tc.tag, tc.bump) + if err != nil { + t.Fatal(err) + } + if got != tc.want { + t.Fatalf("bumpVersion(%q, %s) = %q, want %q", tc.tag, tc.bump, got, tc.want) + } + }) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.133/cmd/release_unix_test.go new/arkade-0.11.134/cmd/release_unix_test.go --- old/arkade-0.11.133/cmd/release_unix_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/arkade-0.11.134/cmd/release_unix_test.go 2026-10-23 15:39:10.000000000 +0200 @@ -0,0 +1,91 @@ +//go:build !windows + +package cmd + +import ( + "os" + "path/filepath" + "strings" + "testing" +) + +func TestReleaseTagResolution(t *testing.T) { + dir := t.TempDir() + gh := filepath.Join(dir, "gh") + ghScript := `#!/bin/sh +if [ "$1" = "api" ] && [ "$2" = "repos/{owner}/{repo}/releases?per_page=1" ]; then + if [ "$ARKADE_TEST_RELEASES_EXIT" = "1" ]; then + exit 1 + fi + printf '%s' "$ARKADE_TEST_RELEASES" +elif [ "$1" = "api" ] && [ "$2" = "repos/{owner}/{repo}/tags?per_page=1" ]; then + if [ "$ARKADE_TEST_TAGS_EXIT" = "1" ]; then + exit 1 + fi + printf '%s' "$ARKADE_TEST_TAGS" +elif [ "$1" = "api" ]; then + printf 'PUBLIC\n' +elif [ "$1" = "release" ] && [ "$2" = "create" ]; then + printf '%s' "$3" > "$ARKADE_TEST_RELEASE_MARKER" +fi +` + if err := os.WriteFile(gh, []byte(ghScript), 0755); err != nil { + t.Fatal(err) + } + git := filepath.Join(dir, "git") + if err := os.WriteFile(git, []byte("#!/bin/sh\nprintf 'Initial release\\n'\n"), 0755); err != nil { + t.Fatal(err) + } + t.Setenv("PATH", dir+string(os.PathListSeparator)+os.Getenv("PATH")) + + for _, tc := range []struct { + name string + releases string + tags string + releasesExit string + tagsExit string + wantTag string + wantErr string + }{ + {name: "bare release", releases: `[{"tag_name":"0.2.4"}]`, wantTag: "0.2.5"}, + {name: "prefixed release", releases: `[{"tag_name":"v1.0.4"}]`, wantTag: "v1.0.5"}, + {name: "new project", releases: "[]", tags: "[]", wantTag: "v0.0.1"}, + {name: "existing project", releases: "[]", tags: `[{"name":"0.11.133"}]`, wantErr: "repository tag \"0.11.133\" exists"}, + {name: "invalid release list", releases: "null", tags: "[]", wantErr: "null release list"}, + {name: "release without tag", releases: `[{}]`, wantErr: "release without a tag"}, + {name: "invalid tag list", releases: "[]", tags: "null", wantErr: "could not read repository tags"}, + {name: "release API failure", releasesExit: "1", wantErr: "gh exited with code 1"}, + {name: "tag API failure", releases: "[]", tagsExit: "1", wantErr: "could not check repository tags"}, + } { + t.Run(tc.name, func(t *testing.T) { + marker := filepath.Join(t.TempDir(), "created") + t.Setenv("ARKADE_TEST_RELEASES", tc.releases) + t.Setenv("ARKADE_TEST_TAGS", tc.tags) + t.Setenv("ARKADE_TEST_RELEASES_EXIT", tc.releasesExit) + t.Setenv("ARKADE_TEST_TAGS_EXIT", tc.tagsExit) + t.Setenv("ARKADE_TEST_RELEASE_MARKER", marker) + + err := MakeRelease().Execute() + if tc.wantErr != "" { + if err == nil || !strings.Contains(err.Error(), tc.wantErr) { + t.Fatalf("expected %q error, got %v", tc.wantErr, err) + } + if _, err := os.Stat(marker); !os.IsNotExist(err) { + t.Fatalf("gh release create was called: %v", err) + } + return + } + + if err != nil { + t.Fatal(err) + } + tag, err := os.ReadFile(marker) + if err != nil { + t.Fatalf("gh release create was not called: %v", err) + } + if string(tag) != tc.wantTag { + t.Fatalf("created tag %q, want %q", tag, tc.wantTag) + } + }) + } +} ++++++ arkade.obsinfo ++++++ --- /var/tmp/diff_new_pack.EHfaUt/_old 2026-10-27 16:51:24.523637883 +0100 +++ /var/tmp/diff_new_pack.EHfaUt/_new 2026-10-27 16:51:24.531638218 +0100 @@ -1,5 +1,5 @@ name: arkade -version: 0.11.133 -mtime: 1792682927 -commit: 0b5a95c8ff1ffcad42f9e6d22fe1268ed2e5d2fe +version: 0.11.134 +mtime: 1792762750 +commit: 8acb4741409717fc99fb8fb4e4a1ecf30d61c05e ++++++ gha-bump.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gha-bump/.github/CODEOWNERS new/gha-bump/.github/CODEOWNERS --- old/gha-bump/.github/CODEOWNERS 1970-01-01 01:00:00.000000000 +0100 +++ new/gha-bump/.github/CODEOWNERS 2026-08-29 09:34:32.000000000 +0200 @@ -0,0 +1 @@ +@alexellis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gha-bump/.github/dependabot.yml new/gha-bump/.github/dependabot.yml --- old/gha-bump/.github/dependabot.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/gha-bump/.github/dependabot.yml 2026-08-29 09:34:32.000000000 +0200 @@ -0,0 +1,11 @@ +version: 2 +# reference: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gha-bump/.github/workflows/build.yml new/gha-bump/.github/workflows/build.yml --- old/gha-bump/.github/workflows/build.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/gha-bump/.github/workflows/build.yml 2026-08-29 09:34:32.000000000 +0200 @@ -0,0 +1,27 @@ +name: build + +on: + push: + branches: + - '*' + pull_request: + branches: + - '*' + +jobs: + build: + concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 1 + - name: Install Go + uses: actions/setup-go@v7 + with: + go-version: 1.25.x + - name: Make all + run: make all diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gha-bump/.github/workflows/publish.yml new/gha-bump/.github/workflows/publish.yml --- old/gha-bump/.github/workflows/publish.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/gha-bump/.github/workflows/publish.yml 2026-08-29 09:34:32.000000000 +0200 @@ -0,0 +1,37 @@ +name: publish + +on: + push: + tags: + - '*' + +permissions: + contents: write + checks: write + + actions: read + issues: read + packages: write + pull-requests: read + repository-projects: read + statuses: read + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 1 + - name: Install Go + uses: actions/setup-go@v7 + with: + go-version: 1.25.x + - name: Make all + run: make all + - name: Upload release binaries + uses: alexellis/[email protected] + env: + GITHUB_TOKEN: ${{ github.token }} + with: + asset_paths: '["./bin/gha-bump*"]' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gha-bump/.gitignore new/gha-bump/.gitignore --- old/gha-bump/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/gha-bump/.gitignore 2026-08-29 09:34:32.000000000 +0200 @@ -0,0 +1,2 @@ +/gha-bump +/bin/** ++++++ vendor.tar.gz ++++++
