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-01-21 14:16:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/arkade (Old) and /work/SRC/openSUSE:Factory/.arkade.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "arkade" Wed Jan 21 14:16:42 2026 rev:67 rq:1328337 version:0.11.64 Changes: -------- --- /work/SRC/openSUSE:Factory/arkade/arkade.changes 2026-01-17 14:54:35.470776556 +0100 +++ /work/SRC/openSUSE:Factory/.arkade.new.1928/arkade.changes 2026-01-21 14:16:49.537566217 +0100 @@ -1,0 +2,7 @@ +Tue Jan 20 15:35:35 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.11.64: + * Add note + * Add claude code with verification strategy + +------------------------------------------------------------------- Old: ---- arkade-0.11.63.obscpio New: ---- arkade-0.11.64.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ arkade.spec ++++++ --- /var/tmp/diff_new_pack.f53ZYT/_old 2026-01-21 14:16:52.661697345 +0100 +++ /var/tmp/diff_new_pack.f53ZYT/_new 2026-01-21 14:16:52.661697345 +0100 @@ -17,7 +17,7 @@ Name: arkade -Version: 0.11.63 +Version: 0.11.64 Release: 0 Summary: Open Source Kubernetes Marketplace License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.f53ZYT/_old 2026-01-21 14:16:52.785702550 +0100 +++ /var/tmp/diff_new_pack.f53ZYT/_new 2026-01-21 14:16:52.817703893 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/alexellis/arkade</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">0.11.63</param> + <param name="revision">0.11.64</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.f53ZYT/_old 2026-01-21 14:16:53.157718164 +0100 +++ /var/tmp/diff_new_pack.f53ZYT/_new 2026-01-21 14:16:53.201720011 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/alexellis/arkade</param> - <param name="changesrevision">260fa9dedff75b5877d9f175ec4b516619a1eb29</param></service></servicedata> + <param name="changesrevision">dd08cc5ca0a283ab0420f0a604fccb7e22e2c093</param></service></servicedata> (No newline at EOF) ++++++ arkade-0.11.63.obscpio -> arkade-0.11.64.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.63/README.md new/arkade-0.11.64/README.md --- old/arkade-0.11.63/README.md 2026-01-15 18:33:12.000000000 +0100 +++ new/arkade-0.11.64/README.md 2026-01-20 15:35:28.000000000 +0100 @@ -762,9 +762,10 @@ | TOOL | DESCRIPTION | |------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [age](https://github.com/FiloSottile/age) | A simple, modern and secure file encryption tool. | | [actions-usage](https://github.com/self-actuated/actions-usage) | Get usage insights from GitHub Actions. | | [actuated-cli](https://github.com/self-actuated/actuated-cli) | Official CLI for actuated.dev | +| [age](https://github.com/FiloSottile/age) | A simple, modern, and secure file encryption tool. | +| [age-keygen](https://github.com/FiloSottile/age) | Key generation tool for age encryption. | | [alloy](https://github.com/grafana/alloy) | OpenTelemetry Collector distribution with programmable pipelines | | [argocd](https://github.com/argoproj/argo-cd) | Declarative, GitOps continuous delivery tool for Kubernetes. | | [argocd-autopilot](https://github.com/argoproj-labs/argocd-autopilot) | An opinionated way of installing Argo-CD and managing GitOps repositories. | @@ -778,6 +779,7 @@ | [ch-remote](https://github.com/cloud-hypervisor/cloud-hypervisor) | The ch-remote binary is used for controlling an running Virtual Machine. | | [cilium](https://github.com/cilium/cilium-cli) | CLI to install, manage & troubleshoot Kubernetes clusters running Cilium. | | [civo](https://github.com/civo/cli) | CLI for interacting with your Civo resources. | +| [claude](https://github.com/anthropic/claude) | Claude Code. | | [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) | Cloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on top of the KVM hypervisor and the Microsoft Hypervisor (MSHV). | | [clusterawsadm](https://github.com/kubernetes-sigs/cluster-api-provider-aws) | Kubernetes Cluster API Provider AWS Management Utility | | [clusterctl](https://github.com/kubernetes-sigs/cluster-api) | The clusterctl CLI tool handles the lifecycle of a Cluster API management cluster | @@ -895,7 +897,7 @@ | [oh-my-posh](https://github.com/jandedobbeleer/oh-my-posh) | A prompt theme engine for any shell that can display kubernetes information. | | [op](https://github.com/1password/) | 1Password CLI enables you to automate administrative tasks and securely provision secrets across development environments. | | [opa](https://github.com/open-policy-agent/opa) | General-purpose policy engine that enables unified, context-aware policy enforcement across the entire stack. | -| [opencode](https://github.com/anomalyco/opencode) | The opencode CLI for running AI agents and tools. | +| [opencode](https://github.com/anomalyco/opencode) | The opencode CLI for running AI agents and tools. | | [openshift-install](https://github.com/openshift/installer) | CLI to install an OpenShift 4.x cluster. | | [operator-sdk](https://github.com/operator-framework/operator-sdk) | Operator SDK is a tool for scaffolding and generating code for building Kubernetes operators | | [opkssh](https://github.com/openpubkey/opkssh) | A new type of shell that can handle structured data like YAML really well | @@ -946,6 +948,6 @@ | [waypoint](https://github.com/hashicorp/waypoint) | Easy application deployment for Kubernetes and Amazon ECS | | [yq](https://github.com/mikefarah/yq) | Portable command-line YAML processor. | | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Fork of youtube-dl with additional features and fixes | -There are 183 tools, use `arkade get NAME` to download one. +There are 186 tools, use `arkade get NAME` to download one. > Note to contributors, run `go build && ./arkade get --format markdown` to > generate this list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.63/pkg/get/download.go new/arkade-0.11.64/pkg/get/download.go --- old/arkade-0.11.63/pkg/get/download.go 2026-01-15 18:33:12.000000000 +0100 +++ new/arkade-0.11.64/pkg/get/download.go 2026-01-20 15:35:28.000000000 +0100 @@ -3,6 +3,7 @@ import ( "bytes" "crypto/sha256" + "encoding/json" "fmt" "io" "log" @@ -57,7 +58,78 @@ } if verify { - if tool.VerifyStrategy == HashicorpShasumStrategy { + if tool.VerifyStrategy == ClaudeShasumStrategy { + st := time.Now() + tmpl := template.New(tool.Name + "sha") + tmpl = tmpl.Funcs(templateFuncs) + t, err := tmpl.Parse(tool.VerifyTemplate) + if err != nil { + return "", "", err + } + + var buf bytes.Buffer + inputs := map[string]string{ + "Name": tool.Name, + "Owner": tool.Owner, + "Repo": tool.Repo, + "Version": resolvedVersion, + "VersionNumber": strings.TrimPrefix(resolvedVersion, "v"), + "Arch": arch, + "OS": operatingSystem, + } + + if err = t.Execute(&buf, inputs); err != nil { + return "", "", err + } + + verifyURL := strings.TrimSpace(buf.String()) + log.Printf("Downloading SHA sum from: %s", verifyURL) + shaSumManifest, err := fetchText(verifyURL) + if err != nil { + return "", "", err + } + // { + // "version": "2.1.12", + // "buildDate": "2026-01-17T15:42:38Z", + // "platforms": { + // "darwin-arm64": { + // "checksum": "40be59519a84bd35eb1111aa46f72aa6b3443866d3f6336252a198fdcaefbbe5", + // "size": 177846896 + // }, + + var manifest struct { + Version string `json:"version"` + BuildDate string `json:"buildDate"` + Platforms map[string]struct { + Checksum string `json:"checksum"` + Size int64 `json:"size"` + } `json:"platforms"` + } + if err := json.Unmarshal([]byte(shaSumManifest), &manifest); err != nil { + return "", "", err + } + + var archMappingForClaude = map[string]string{ + "amd64": "amd64", + "x86_64": "x64", + "arm64": "arm64", + "aarch64": "arm64", + } + + platformKey := fmt.Sprintf("%s-%s", strings.ToLower(operatingSystem), archMappingForClaude[arch]) + + platformInfo, found := manifest.Platforms[platformKey] + if !found { + return "", "", fmt.Errorf("no checksum info found for platform: %s", platformKey) + } + + if err := verifySHA(platformInfo.Checksum, outFilePath); err != nil { + return "", "", err + } else { + log.Printf("SHA sum verified in %s.", time.Since(st).Round(time.Millisecond)) + } + + } else if tool.VerifyStrategy == HashicorpShasumStrategy { st := time.Now() tmpl := template.New(tool.Name + "sha") tmpl = tmpl.Funcs(templateFuncs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.63/pkg/get/get.go new/arkade-0.11.64/pkg/get/get.go --- old/arkade-0.11.63/pkg/get/get.go 2026-01-15 18:33:12.000000000 +0100 +++ new/arkade-0.11.64/pkg/get/get.go 2026-01-20 15:35:28.000000000 +0100 @@ -20,8 +20,10 @@ const GitHubVersionStrategy = "github" const GitLabVersionStrategy = "gitlab" const k8sVersionStrategy = "k8s" +const ClaudeStrategy = `claude` const HashicorpShasumStrategy = `hashicorp-sha` +const ClaudeShasumStrategy = `claude-sha` var supportedOS = [...]string{"linux", "darwin", "ming"} var supportedArchitectures = [...]string{"x86_64", "arm", "amd64", "armv6l", "armv7l", "arm64", "aarch64"} @@ -92,6 +94,11 @@ Timeout: time.Second * 10, Method: http.MethodGet, }, + ClaudeStrategy: { + Url: "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/latest", + Timeout: time.Second * 5, + Method: http.MethodGet, + }, } type ToolLocal struct { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.63/pkg/get/get_test.go new/arkade-0.11.64/pkg/get/get_test.go --- old/arkade-0.11.63/pkg/get/get_test.go 2026-01-15 18:33:12.000000000 +0100 +++ new/arkade-0.11.64/pkg/get/get_test.go 2026-01-20 15:35:28.000000000 +0100 @@ -9239,6 +9239,59 @@ } } +func Test_DownloadClaude(t *testing.T) { + tools := MakeTools() + name := "claude" + + tool := getTool(name, tools) + + const toolVersion = "2.1.12" + + tests := []test{ + { + os: "darwin", + arch: arch64bit, + version: toolVersion, + url: "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.12/darwin-x64/claude", + }, + { + os: "darwin", + arch: archDarwinARM64, + version: toolVersion, + url: "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.12/darwin-arm64/claude", + }, + { + os: "linux", + arch: arch64bit, + version: toolVersion, + url: "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.12/linux-x64/claude", + }, + { + os: "linux", + arch: archARM64, + version: toolVersion, + url: "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.12/linux-arm64/claude", + }, + { + // Windows is not supported, but should resolve to a URL to get a 404. + os: "mingw64_nt-10.0-18362", + arch: arch64bit, + version: toolVersion, + url: "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.12/windows-x64/claude", + }, + } + + for _, tc := range tests { + got, _, err := tool.GetURL(tc.os, tc.arch, tc.version, false) + if err != nil { + t.Fatal(err) + } + if got != tc.url { + t.Errorf("\nwant: %s\ngot: %s", tc.url, got) + } + } +} + func Test_LogCLI(t *testing.T) { tools := MakeTools() name := "logcli" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/arkade-0.11.63/pkg/get/tools.go new/arkade-0.11.64/pkg/get/tools.go --- old/arkade-0.11.63/pkg/get/tools.go 2026-01-15 18:33:12.000000000 +0100 +++ new/arkade-0.11.64/pkg/get/tools.go 2026-01-20 15:35:28.000000000 +0100 @@ -70,6 +70,36 @@ {{- end -}}`, }) + // Claude Code CLI + tools = append(tools, + Tool{ + Owner: "anthropic", + Repo: "claude", + Name: "claude", + Description: "Claude Code.", + VerifyStrategy: ClaudeShasumStrategy, + VerifyTemplate: `https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/{{.Version}}/manifest.json`, VersionStrategy: ClaudeStrategy, + URLTemplate: ` +{{$os := .OS}} +{{$arch := .Arch}} + +{{ if or (eq .Arch "x86_64") (eq .Arch "amd64") -}} +{{ $arch = "x64" }} +{{- else if or (eq .Arch "arm64") (eq .Arch "aarch64") -}} +{{ $arch = "arm64" }} +{{- end}} + +{{ if HasPrefix .OS "ming" -}} +{{ $os = "windows" }} +{{- else if eq .OS "darwin" -}} +{{ $os = "darwin" }} +{{- else -}} +{{ $os = "linux" }} +{{- end -}} + +https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/{{.Version}}/{{$os}}-{{$arch}}/claude +`}) + tools = append(tools, Tool{ Owner: "helm", ++++++ arkade.obsinfo ++++++ --- /var/tmp/diff_new_pack.f53ZYT/_old 2026-01-21 14:16:56.389853825 +0100 +++ /var/tmp/diff_new_pack.f53ZYT/_new 2026-01-21 14:16:56.425855337 +0100 @@ -1,5 +1,5 @@ name: arkade -version: 0.11.63 -mtime: 1768498392 -commit: 260fa9dedff75b5877d9f175ec4b516619a1eb29 +version: 0.11.64 +mtime: 1768919728 +commit: dd08cc5ca0a283ab0420f0a604fccb7e22e2c093 ++++++ vendor.tar.gz ++++++
