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 ++++++

Reply via email to