Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package jfrog-cli for openSUSE:Factory checked in at 2026-07-17 01:41:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/jfrog-cli (Old) and /work/SRC/openSUSE:Factory/.jfrog-cli.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jfrog-cli" Fri Jul 17 01:41:05 2026 rev:47 rq:1366053 version:2.115.0 Changes: -------- --- /work/SRC/openSUSE:Factory/jfrog-cli/jfrog-cli.changes 2026-07-09 22:21:01.509486386 +0200 +++ /work/SRC/openSUSE:Factory/.jfrog-cli.new.24530/jfrog-cli.changes 2026-07-17 01:42:55.452137091 +0200 @@ -1,0 +2,17 @@ +Thu Jul 16 05:23:11 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 2.115.0 (2.114.0 does not exist): + * New Features + - [build-info-go] add ci env check for buid info duration + capture #397 (@reshmifrog) + - [jfrog-cli] Add OpenAPI spec embed for jf api operation + discovery #3595 (@ehl-jf) + * Bug Fixes + - [build-info-go] RTECO-1401 Fix/Publish Build Info with Build + Duration #395 (@reshmifrog) + - [jfrog-cli] fix build info build duration issue #3575 + (@reshmifrog) + - [jfrog-cli-artifactory] Updating oras.land/oras-go/v2 version + to 2.6.2 #507 (@naveenku-jfrog) + +------------------------------------------------------------------- Old: ---- jfrog-cli-2.113.0.obscpio New: ---- jfrog-cli-2.115.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ jfrog-cli.spec ++++++ --- /var/tmp/diff_new_pack.QHX8Zw/_old 2026-07-17 01:42:56.540173824 +0200 +++ /var/tmp/diff_new_pack.QHX8Zw/_new 2026-07-17 01:42:56.544173959 +0200 @@ -19,7 +19,7 @@ %define executable_name jf Name: jfrog-cli -Version: 2.113.0 +Version: 2.115.0 Release: 0 Summary: A client that automates access to the JFrog products License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.QHX8Zw/_old 2026-07-17 01:42:56.580175174 +0200 +++ /var/tmp/diff_new_pack.QHX8Zw/_new 2026-07-17 01:42:56.584175310 +0200 @@ -4,7 +4,7 @@ <param name="scm">git</param> <param name="submodules">disable</param> <param name="exclude">.git</param> - <param name="revision">refs/tags/v2.113.0</param> + <param name="revision">refs/tags/v2.115.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.QHX8Zw/_old 2026-07-17 01:42:56.612176255 +0200 +++ /var/tmp/diff_new_pack.QHX8Zw/_new 2026-07-17 01:42:56.616176390 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/jfrog/jfrog-cli.git</param> - <param name="changesrevision">9cd75bda20ff5fe8f9a7dd8f68e58a8c11dc44e5</param></service></servicedata> + <param name="changesrevision">c338314207387d39d2fd94f8985da7f9f71cba6d</param></service></servicedata> (No newline at EOF) ++++++ jfrog-cli-2.113.0.obscpio -> jfrog-cli-2.115.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/Makefile new/jfrog-cli-2.115.0/Makefile --- old/jfrog-cli-2.113.0/Makefile 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/Makefile 2026-07-15 16:07:43.000000000 +0200 @@ -17,6 +17,8 @@ @echo " clean - Clean build artifacts" @echo " test - Run tests" @echo " build - Build the project" + @echo " stub - Build jf with the OSS-default stub OpenAPI spec bundle" + @echo " full - Build jf with the full OpenAPI spec bundle (requires docs/api-spec/full/ to be populated)" # Update all JFrog dependencies update-all: update-build-info-go update-client-go update-gofrog update-core update-artifactory update-platform-services update-security update-apptrust update-evidence @@ -94,3 +96,12 @@ build: @echo "Building project..." @go build ./... + +# Build jf with the OSS-default stub OpenAPI spec bundle (docs/api-spec/stub/) +stub: + @./build/build.sh jf + +# Build jf with the full OpenAPI spec bundle (docs/api-spec/full/) — used by +# JFrog's internal release pipeline after it populates docs/api-spec/full/ +full: + @JF_BUILD_TAGS=full ./build/build.sh jf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/build.sh new/jfrog-cli-2.115.0/build/build.sh --- old/jfrog-cli-2.113.0/build/build.sh 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/build.sh 2026-07-15 16:07:43.000000000 +0200 @@ -8,5 +8,5 @@ exe_name="$1" fi -CGO_ENABLED=0 go build -o "$exe_name" -ldflags '-w -extldflags "-static"' main.go +CGO_ENABLED=0 go build -o "$exe_name" -tags "${JF_BUILD_TAGS:-}" -ldflags '-w -extldflags "-static"' main.go echo "The $exe_name executable was successfully created." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/docker/full/Dockerfile new/jfrog-cli-2.115.0/build/docker/full/Dockerfile --- old/jfrog-cli-2.113.0/build/docker/full/Dockerfile 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/docker/full/Dockerfile 2026-07-15 16:07:43.000000000 +0200 @@ -1,6 +1,6 @@ ARG repo_name_21 # Remove ${repo_name_21} to pull from Docker Hub. -FROM ${repo_name_21}/jfrog-docker/golang:1.26.3 as builder +FROM ${repo_name_21}/jfrog-docker/golang:1.26.5 as builder ARG image_name=jfrog-cli-full ARG cli_executable_name WORKDIR /${image_name} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/docker/slim/Dockerfile new/jfrog-cli-2.115.0/build/docker/slim/Dockerfile --- old/jfrog-cli-2.113.0/build/docker/slim/Dockerfile 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/docker/slim/Dockerfile 2026-07-15 16:07:43.000000000 +0200 @@ -1,6 +1,6 @@ ARG repo_name_21 # Remove ${repo_name_21} to pull from Docker Hub. -FROM ${repo_name_21}/jfrog-docker/golang:1.26.3-alpine as builder +FROM ${repo_name_21}/jfrog-docker/golang:1.26.5-alpine as builder ARG image_name=jfrog-cli ARG cli_executable_name WORKDIR /${image_name} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/npm/v2/package-lock.json new/jfrog-cli-2.115.0/build/npm/v2/package-lock.json --- old/jfrog-cli-2.113.0/build/npm/v2/package-lock.json 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/npm/v2/package-lock.json 2026-07-15 16:07:43.000000000 +0200 @@ -1,5 +1,5 @@ { "name": "jfrog-cli-v2", - "version": "2.113.0", + "version": "2.115.0", "lockfileVersion": 2 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/npm/v2/package.json new/jfrog-cli-2.115.0/build/npm/v2/package.json --- old/jfrog-cli-2.113.0/build/npm/v2/package.json 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/npm/v2/package.json 2026-07-15 16:07:43.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "jfrog-cli-v2", - "version": "2.113.0", + "version": "2.115.0", "description": "🐸 Command-line interface for JFrog Artifactory, Xray, Distribution, Pipelines and Mission Control 🐸", "homepage": "https://github.com/jfrog/jfrog-cli", "preferGlobal": true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/npm/v2-jf/package-lock.json new/jfrog-cli-2.115.0/build/npm/v2-jf/package-lock.json --- old/jfrog-cli-2.113.0/build/npm/v2-jf/package-lock.json 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/npm/v2-jf/package-lock.json 2026-07-15 16:07:43.000000000 +0200 @@ -1,5 +1,5 @@ { "name": "jfrog-cli-v2-jf", - "version": "2.113.0", + "version": "2.115.0", "lockfileVersion": 1 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/build/npm/v2-jf/package.json new/jfrog-cli-2.115.0/build/npm/v2-jf/package.json --- old/jfrog-cli-2.113.0/build/npm/v2-jf/package.json 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/build/npm/v2-jf/package.json 2026-07-15 16:07:43.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "jfrog-cli-v2-jf", - "version": "2.113.0", + "version": "2.115.0", "description": "🐸 Command-line interface for JFrog Artifactory, Xray, Distribution, Pipelines and Mission Control 🐸", "homepage": "https://github.com/jfrog/jfrog-cli", "preferGlobal": true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/buildinfo_test.go new/jfrog-cli-2.115.0/buildinfo_test.go --- old/jfrog-cli-2.113.0/buildinfo_test.go 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/buildinfo_test.go 2026-07-15 16:07:43.000000000 +0200 @@ -9,6 +9,7 @@ "strconv" "strings" "testing" + "time" "github.com/jfrog/jfrog-cli-artifactory/artifactory/formats" clientTestUtils "github.com/jfrog/jfrog-client-go/utils/tests" @@ -661,6 +662,37 @@ // Cleanup inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails) + cleanArtifactoryTest() +} + +func TestArtifactoryBuildPublishRecordsDuration(t *testing.T) { + initArtifactoryTest(t, "") + // Use a unique build number to avoid clashing with other tests that reuse RtBuildName1. + buildNumber := strconv.FormatInt(time.Now().Unix(), 10) + inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails) + + // First build command - records the build's start time. + uploadFiles(t, "upload", "--build-name="+tests.RtBuildName1, "--build-number="+buildNumber) + // Collect environment, mirroring the reported scenario (upload -> bce -> bp). + assert.NoError(t, artifactoryCli.WithoutCredentials().Exec("bce", tests.RtBuildName1, buildNumber)) + runRt(t, "bp", tests.RtBuildName1, buildNumber) + + publishedBuildInfo, found, err := tests.GetBuildInfo(serverDetails, tests.RtBuildName1, buildNumber) + if err != nil { + assert.NoError(t, err) + return + } + if !found { + assert.True(t, found, "build info was expected to be found") + return + } + buildInfo := publishedBuildInfo.BuildInfo + + assert.NotEmpty(t, buildInfo.Started, "build info should have a 'started' timestamp") + assert.Greater(t, buildInfo.DurationMillis, int64(0), "build duration should not be published as 0") + + // Cleanup + inttestutils.DeleteBuild(serverDetails.ArtifactoryUrl, tests.RtBuildName1, artHttpDetails) cleanArtifactoryTest() } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/embed_full.go new/jfrog-cli-2.115.0/docs/api-spec/embed_full.go --- old/jfrog-cli-2.113.0/docs/api-spec/embed_full.go 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/embed_full.go 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,24 @@ +//go:build full + +package apispec + +import ( + "embed" + "strings" +) + +//go:embed full/*.yaml full/VERSION +var specFS embed.FS + +const rootDir = "full" + +// Bundle identifies which OpenAPI spec set is embedded in this binary. +const Bundle = "full" + +func specVersion() string { + data, err := specFS.ReadFile(rootDir + "/VERSION") + if err != nil { + return "" + } + return strings.TrimSpace(string(data)) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/embed_stub.go new/jfrog-cli-2.115.0/docs/api-spec/embed_stub.go --- old/jfrog-cli-2.113.0/docs/api-spec/embed_stub.go 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/embed_stub.go 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,17 @@ +//go:build !full + +package apispec + +import "embed" + +//go:embed stub/*.yaml +var specFS embed.FS + +const rootDir = "stub" + +// Bundle identifies which OpenAPI spec set is embedded in this binary. +const Bundle = "stub" + +func specVersion() string { + return "" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/full/.placeholder.yaml new/jfrog-cli-2.115.0/docs/api-spec/full/.placeholder.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/full/.placeholder.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/full/.placeholder.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,7 @@ +# Placeholder so `-tags full` compiles in an OSS checkout before JFrog's internal +# release job populates this directory with the real rdme-admin reference bundle. +# A go:embed glob errors at compile time if it matches zero files, so this +# dot-prefixed, zero-operation file keeps full/*.yaml satisfied without being +# picked up by directory-style embeds (which exclude dot-prefixed names). +openapi: 3.1.0 +paths: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/parser.go new/jfrog-cli-2.115.0/docs/api-spec/parser.go --- old/jfrog-cli-2.113.0/docs/api-spec/parser.go 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/parser.go 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,146 @@ +// Package apispec exposes the operations declared in jfrog-cli's embedded +// OpenAPI spec bundle (a small "stub" set by default, or the real "full" set +// in JFrog's internal release build — see docs/api-spec/). +package apispec + +import ( + "fmt" + "sort" + "strings" + "sync" + + "gopkg.in/yaml.v3" +) + +var httpMethods = map[string]bool{ + "get": true, "put": true, "post": true, "delete": true, + "options": true, "head": true, "patch": true, "trace": true, +} + +// Parameter describes a single OpenAPI operation parameter. +type Parameter struct { + Name string `yaml:"name"` + In string `yaml:"in"` + Required bool `yaml:"required"` + Description string `yaml:"description"` +} + +// Operation describes a single OpenAPI path+method operation. +type Operation struct { + Method string + Path string + Summary string + Tags []string + OperationId string + Parameters []Parameter +} + +// Metadata describes which spec bundle is embedded in this binary. +type Metadata struct { + SpecBundle string + SpecVersion string +} + +type rawDoc struct { + Paths map[string]map[string]yaml.Node `yaml:"paths"` +} + +type rawOperation struct { + Summary string `yaml:"summary"` + OperationId string `yaml:"operationId"` + Tags []string `yaml:"tags"` + Parameters []Parameter `yaml:"parameters"` +} + +var ( + once sync.Once + operations []Operation + parseErr error +) + +// Operations returns every operation across the embedded OpenAPI spec bundle. +// Parsing happens once per process and the result is cached. +func Operations() ([]Operation, error) { + once.Do(func() { + operations, parseErr = parseAll() + }) + return operations, parseErr +} + +// Info reports which spec bundle is embedded and, for full builds, the +// rdme-admin commit it was fetched from. +func Info() Metadata { + return Metadata{ + SpecBundle: Bundle, + SpecVersion: specVersion(), + } +} + +// isSpecFile reports whether name is a top-level OpenAPI YAML file that should +// be parsed. Excludes rdme-admin's per-endpoint _order.yaml nav files and any +// dotfile (including this package's own full/.placeholder.yaml). +func isSpecFile(name string) bool { + return strings.HasSuffix(name, ".yaml") && !strings.HasPrefix(name, ".") && !strings.HasPrefix(name, "_") +} + +func parseAll() ([]Operation, error) { + entries, err := specFS.ReadDir(rootDir) + if err != nil { + return nil, fmt.Errorf("apispec: reading %s: %w", rootDir, err) + } + + var ops []Operation + for _, entry := range entries { + if entry.IsDir() || !isSpecFile(entry.Name()) { + continue + } + fileOps, err := parseFile(rootDir + "/" + entry.Name()) + if err != nil { + return nil, fmt.Errorf("apispec: parsing %s: %w", entry.Name(), err) + } + ops = append(ops, fileOps...) + } + + sort.Slice(ops, func(i, j int) bool { + if ops[i].Path != ops[j].Path { + return ops[i].Path < ops[j].Path + } + return ops[i].Method < ops[j].Method + }) + return ops, nil +} + +func parseFile(name string) ([]Operation, error) { + data, err := specFS.ReadFile(name) + if err != nil { + return nil, err + } + + var doc rawDoc + if err := yaml.Unmarshal(data, &doc); err != nil { + return nil, err + } + + var ops []Operation + for p, methods := range doc.Paths { + for method, node := range methods { + lower := strings.ToLower(method) + if !httpMethods[lower] { + continue + } + var op rawOperation + if err := node.Decode(&op); err != nil { + return nil, fmt.Errorf("path %s method %s: %w", p, method, err) + } + ops = append(ops, Operation{ + Method: strings.ToUpper(method), + Path: p, + Summary: op.Summary, + Tags: op.Tags, + OperationId: op.OperationId, + Parameters: op.Parameters, + }) + } + } + return ops, nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/parser_test.go new/jfrog-cli-2.115.0/docs/api-spec/parser_test.go --- old/jfrog-cli-2.113.0/docs/api-spec/parser_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/parser_test.go 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,97 @@ +//go:build !full + +// These tests assert exact values from the stub fixtures and don't apply to a +// full build (whose docs/api-spec/full/ content is populated at release time). + +package apispec + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestOperations_Stub(t *testing.T) { + ops, err := Operations() + require.NoError(t, err) + require.Len(t, ops, 10, "expected exactly the 10 trimmed real operations across the 7 stub files") + + byOperationId := make(map[string]Operation, len(ops)) + for _, op := range ops { + byOperationId[op.OperationId] = op + } + + getUserList, ok := byOperationId["getUserList"] + require.True(t, ok, "getUserList should be present") + assert.Equal(t, "GET", getUserList.Method) + assert.Equal(t, "/access/api/v2/users", getUserList.Path) + assert.Equal(t, "Get User List", getUserList.Summary) + assert.Equal(t, []string{"Users"}, getUserList.Tags) + assert.Len(t, getUserList.Parameters, 10) + + createUser, ok := byOperationId["createUser"] + require.True(t, ok, "createUser should be present") + assert.Equal(t, "POST", createUser.Method) + assert.Equal(t, "/access/api/v2/users", createUser.Path) + + deleteWorker, ok := byOperationId["deleteWorker"] + require.True(t, ok, "deleteWorker should be present") + assert.Equal(t, "DELETE", deleteWorker.Method) + assert.Equal(t, "/worker/api/v1/workers/{workerKey}", deleteWorker.Path) + require.Len(t, deleteWorker.Parameters, 1) + assert.Equal(t, "workerKey", deleteWorker.Parameters[0].Name) + assert.Equal(t, "path", deleteWorker.Parameters[0].In) + assert.True(t, deleteWorker.Parameters[0].Required) + + ping, ok := byOperationId["artifactoryPing"] + require.True(t, ok, "artifactoryPing should be present") + assert.Equal(t, []string{"Artifactory System"}, ping.Tags) + assert.Empty(t, ping.Parameters) +} + +func TestOperations_SortedByPathThenMethod(t *testing.T) { + ops, err := Operations() + require.NoError(t, err) + + for i := 1; i < len(ops); i++ { + prev, cur := ops[i-1], ops[i] + if prev.Path == cur.Path { + assert.LessOrEqual(t, prev.Method, cur.Method, "same path %q should be sorted by method", prev.Path) + continue + } + assert.Less(t, prev.Path, cur.Path, "operations should be sorted by path") + } +} + +func TestOperations_CachedAcrossCalls(t *testing.T) { + first, err := Operations() + require.NoError(t, err) + second, err := Operations() + require.NoError(t, err) + assert.Same(t, &first[0], &second[0], "Operations should return the same cached backing array on repeat calls") +} + +func TestInfo_Stub(t *testing.T) { + info := Info() + assert.Equal(t, "stub", info.SpecBundle) + assert.Empty(t, info.SpecVersion, "stub builds have no rdme-admin version") +} + +func TestIsSpecFile(t *testing.T) { + tests := []struct { + name string + want bool + }{ + {"users-api.yaml", true}, + {"artifactory-security_openapi.yaml", true}, + {"_order.yaml", false}, + {".placeholder.yaml", false}, + {"VERSION", false}, + {"ReadMe.md", false}, + {"notes.txt", false}, + } + for _, tt := range tests { + assert.Equal(t, tt.want, isSpecFile(tt.name), "isSpecFile(%q)", tt.name) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/access-tokens-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/access-tokens-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/access-tokens-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/access-tokens-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,106 @@ +# Trimmed excerpt of JFrog's public Platform Access Tokens API reference, kept as +# an OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the full +# spec — see docs/api-spec/full/ (populated only in JFrog's internal release +# build). +openapi: 3.1.0 +info: + title: JFrog Platform - Access Tokens API + description: > + Manage access tokens for the JFrog Platform, including creating, refreshing, + listing, and revoking tokens. + + + **Authentication:** Access Tokens as bearer token in authorization header + (`Authorization: Bearer <token>`). Basic authentication is also supported + for the Create Token API when enabled in the platform configuration. + + + **Security:** Security requirements vary per operation. See individual + operation descriptions for details. + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} +tags: + - name: Access Tokens + description: >- + Create, retrieve, refresh, and revoke access tokens for JFrog Platform + services. +security: + - BearerAuth: [] +paths: + /access/api/v1/tokens: + get: + tags: + - Access Tokens + summary: Get Tokens + description: > + Returns token information based on the authenticated principal and + optional filters. Admin users can view all tokens; non-admin users can + only view their own tokens. + + + Reference tokens are supported from Artifactory version 7.133.8. + + + **Security:** Requires a valid token. + operationId: getTokens + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/TokenListResponse' + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions +components: + securitySchemes: + BasicAuth: + type: http + scheme: basic + description: Basic authentication using username and password + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token + schemas: + TokenDetails: + type: object + properties: + token_id: + type: string + subject: + type: string + expiry: + type: integer + issued_at: + type: integer + issuer: + type: string + description: + type: string + refreshable: + type: boolean + scope: + type: string + last_used: + type: integer + description: > + The Unix timestamp (in seconds) of when the token was last used. + Supported from Artifactory version 7.108.3 and above. Requires + `access_token_last_used_enabled: True` and + `access_token_last_used_threshold: 900` system properties to be + configured. + TokenListResponse: + type: object + properties: + tokens: + type: array + items: + $ref: '#/components/schemas/TokenDetails' +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/artifactory-system-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/artifactory-system-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/artifactory-system-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/artifactory-system-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,119 @@ +# Trimmed excerpt of JFrog's public Platform Artifactory System API reference, +# kept as an OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the +# full spec — see docs/api-spec/full/ (populated only in JFrog's internal release +# build). +openapi: 3.1.0 +info: + title: JFrog Platform - Artifactory System API + description: > + Artifactory system configuration APIs for the JFrog Platform. + + + **Authentication:** + + - Basic authentication using username and password + + - Access Tokens instead of password for basic authentication + + - Access Tokens as bearer token in authorization header (Authorization: + Bearer <token>) + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} + description: JFrog Platform + variables: + jfrog_url: + default: myserver.jfrog.io + description: Your JFrog Platform hostname (e.g., mycompany.jfrog.io) +tags: + - name: Artifactory System + description: Artifactory system configuration APIs. +security: + - BearerAuth: [] +paths: + /artifactory/api/system/ping: + get: + tags: + - Artifactory System + summary: Artifactory Ping + description: | + Get a simple status response about the state of Artifactory. + + **Since:** 2.3.0 + + **Security:** Requires a valid user (can be anonymous). + operationId: artifactoryPing + security: [] + responses: + '200': + description: Artifactory is alive and working properly + content: + text/plain: + schema: + type: string + example: OK + '500': + description: Internal Server Error + /artifactory/api/system/version: + get: + tags: + - Artifactory System + summary: Get Artifactory Version + description: > + Return information about the current Artifactory version, revision, and + currently installed Add-ons. + + + **Since:** 2.2.2 + + + **Security:** Requires a valid user (can be anonymous). + operationId: getArtifactoryVersion + security: [] + responses: + '200': + description: Artifactory version, revision, and list of installed add-ons + content: + application/json: + schema: + type: object + properties: + version: + type: string + description: Artifactory version + revision: + type: string + description: Revision number + addons: + type: array + items: + type: string + description: List of addons + application/vnd.org.jfrog.artifactory.system.Version+json: + schema: + type: object + properties: + version: + type: string + revision: + type: string + addons: + type: array + items: + type: string + '401': + description: Bad Credentials - Invalid credentials +components: + securitySchemes: + BasicAuth: + type: http + scheme: basic + description: Basic authentication using username and password + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/global-roles-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/global-roles-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/global-roles-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/global-roles-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,96 @@ +# Trimmed excerpt of JFrog's public Platform Global Roles API reference, kept as +# an OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the full +# spec — see docs/api-spec/full/ (populated only in JFrog's internal release +# build). +openapi: 3.1.0 +info: + title: JFrog Platform - Global Roles API + description: > + Custom global role management APIs for the JFrog Platform. + + + **Authentication:** Access Tokens as bearer token in authorization header + (Authorization: Bearer `<token>`) + + + **Security:** Unless otherwise specified, all APIs require admin privileges. + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} +tags: + - name: Global Roles + description: >- + APIs for creating, editing, deleting, and listing global roles in the + JFrog Platform. +security: + - BearerAuth: [] +paths: + /access/api/v1/roles: + get: + tags: + - Global Roles + summary: Get All Global Roles + description: | + Get all global roles. The response includes predefined roles and custom + global roles. + + + **Security:** Requires admin or Project Admin privileges. + operationId: getAllGlobalRoles + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GlobalRole' + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token + schemas: + GlobalRoleType: + type: string + description: >- + Type for roles returned by this API. ADMIN is the Project Admin role; + PREDEFINED is other built-in roles (e.g. Viewer); CUSTOM_GLOBAL is a + user-defined global role. On PUT, the value must match the role's + current type (the server rejects type changes). + enum: + - ADMIN + - PREDEFINED + - CUSTOM_GLOBAL + GlobalRole: + type: object + properties: + name: + type: string + description: Role name + description: + type: string + description: Role description + type: + $ref: '#/components/schemas/GlobalRoleType' + environments: + type: array + items: + type: string + actions: + type: array + description: >- + Permission actions as enum constant names (e.g. READ_REPOSITORY, + MANAGE_MEMBERS). + items: + type: string +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/groups-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/groups-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/groups-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/groups-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,102 @@ +# Trimmed excerpt of JFrog's public Platform Groups API reference, kept as an +# OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the full spec — +# see docs/api-spec/full/ (populated only in JFrog's internal release build). +openapi: 3.1.0 +info: + title: JFrog Platform - Groups API + description: > + Group management APIs for the JFrog Platform. + + + **Authentication:** Access Tokens as bearer token in authorization header + (Authorization: Bearer <token>) + + + **Security:** Unless otherwise specified, all APIs require admin privileges. + + + **Availability:** Artifactory 7.49.3+ + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} +tags: + - name: Groups + description: >- + APIs for creating, updating, deleting, and managing JFrog Platform groups + and group memberships. +security: + - BearerAuth: [] +paths: + /access/api/v2/groups/{name}: + get: + tags: + - Groups + summary: Get Group Details + description: | + Returns the group's details based on the group name. + + + **Security:** Requires admin privileges. + operationId: getGroupDetails + parameters: + - name: name + in: path + required: true + schema: + type: string + description: The group name + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/GroupDetails' + '400': + description: Bad Request - Invalid input + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions + '404': + description: Not Found - Group not found +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token + schemas: + GroupDetails: + type: object + properties: + name: + type: string + description: The group name + description: + type: string + description: Group description + auto_join: + type: boolean + description: Whether new users auto-join this group + admin_privileges: + type: boolean + description: Whether group has admin privileges + realm: + type: string + description: The authentication realm + realm_attributes: + type: string + description: Realm attributes + external_id: + type: string + description: External ID for SCIM + members: + type: array + items: + type: string + description: Group members +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/permissions-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/permissions-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/permissions-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/permissions-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,104 @@ +# Trimmed excerpt of JFrog's public Platform Permissions API reference, kept as an +# OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the full spec — +# see docs/api-spec/full/ (populated only in JFrog's internal release build). +openapi: 3.1.0 +info: + title: JFrog Platform - Permissions API + description: > + Permission management APIs for the JFrog Platform. + + + **Authentication:** Access Tokens as bearer token in authorization header + (Authorization: Bearer <token>) + + + **Security:** Unless otherwise specified, all APIs require admin privileges. + + + **Availability:** Artifactory 7.72.0+ + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} +tags: + - name: Permissions + description: >- + APIs for creating, updating, deleting, and managing JFrog Platform + permission targets and resources. +security: + - BearerAuth: [] +paths: + /access/api/v2/permissions: + get: + tags: + - Permissions + summary: Get Permissions + description: > + Get the list of all permissions in the system. + + + + **Note:** You can use `cursor` and `limit` attributes independently or + together to refine the results. Enter a permission name in `cursor` to + list permissions starting from that name. Enter an integer in `limit` to + define the number of results, between 1 and 99,999 (non-inclusive). + + + + **Security:** Requires admin privileges, or a scoped token with + `system:permissions:r`. + + + + **Availability:** Artifactory 7.72.0+ + operationId: getPermissions + parameters: + - name: cursor + in: query + schema: + type: string + description: Permission name to start listing from + - name: limit + in: query + schema: + type: integer + minimum: 1 + maximum: 99999 + description: Number of results (between 1 and 99,999, non-inclusive) + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PermissionListResponse' + '400': + description: Bad Request - Invalid input + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token + schemas: + PermissionListResponse: + type: object + properties: + permissions: + type: array + items: + type: object + properties: + name: + type: string + uri: + type: string + cursor: + type: string +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/users-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/users-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/users-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/users-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,270 @@ +# Trimmed excerpt of JFrog's public Platform Users API reference, kept as an +# OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the full spec — +# see docs/api-spec/full/ (populated only in JFrog's internal release build). +openapi: 3.1.0 +info: + title: JFrog Platform - Users API + description: > + User management APIs for the JFrog Platform. + + **Authentication:** Access Tokens as bearer token in authorization header + (Authorization: Bearer <token>) + + **Security:** Unless otherwise specified, all APIs require admin privileges. + + **Availability:** Artifactory 7.49.3+ + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} +tags: + - name: Users + description: >- + APIs for creating, updating, deleting, and managing JFrog Platform users, + groups, and passwords. +security: + - BearerAuth: [] +paths: + /access/api/v2/users: + get: + tags: + - Users + summary: Get User List + description: > + Returns the list of users. + + + **Security:** Requires admin privileges, or a scoped token with + `system:identities:r`. + operationId: getUserList + parameters: + - name: status + in: query + schema: + type: string + enum: + - invited + - enabled + - disabled + - locked + description: Filter users by status + - name: limit + in: query + schema: + type: integer + minimum: 1 + default: 1000 + description: Number of results to return (minimum 1, default 1000) + - name: username + in: query + schema: + type: string + description: Filter by username (contains) + - name: onlyAdmins + in: query + schema: + type: boolean + description: >- + Filter to only admin users. Cannot be used with resourceName. + Available from Artifactory 7.117.x. + - name: cursor + in: query + schema: + type: string + description: Pagination cursor - shows results after this cursor + - name: role + in: query + schema: + type: string + description: >- + Filter users by role. When filtering by role, onlyAdmins and + username parameters are ignored. Available from Artifactory 7.117.x. + - name: resourceType + in: query + schema: + type: string + description: >- + Filter by resource type. Required when filtering by repository role. + Available from Artifactory 7.117.x. + - name: resourceName + in: query + schema: + type: string + description: >- + Filter by repository name. Cannot be used with onlyAdmins. Available + from Artifactory 7.117.x. + - name: projectKey + in: query + schema: + type: string + description: >- + Filter by project key. Refines search within a specific project + context. + - name: descendingOrder + in: query + schema: + type: boolean + description: Sort results in descending order + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UserListResponse' + '400': + description: Bad Request - Invalid input, object invalid + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions + post: + tags: + - Users + summary: Create User + description: > + Creates a new Access user. + + + + **Note:** + + - When `internal_password_disabled=true`, the 'password' field is not + mandatory. + + - The parameter `realm` will be `internal` + + + + **Security:** Requires admin privileges. + operationId: createUser + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateRequest' + responses: + '201': + description: User created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/UserDetails' + '400': + description: Bad Request - Invalid input, object invalid + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions + '409': + description: Conflict - User already exists +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token + schemas: + UserDetails: + type: object + properties: + username: + type: string + description: The username + email: + type: string + description: The user's email address + admin: + type: boolean + description: Whether the user is an admin + effective_admin: + type: boolean + description: Whether the user is effectively an admin (based on groups). + profile_updatable: + type: boolean + description: Whether the user can update their profile + disable_ui_access: + type: boolean + description: Whether UI access is disabled for this user + internal_password_disabled: + type: boolean + description: Whether internal password is disabled + last_logged_in: + type: string + format: date-time + description: Last login timestamp + realm: + type: string + description: The authentication realm + groups: + type: array + items: + type: string + description: Groups the user belongs to + status: + type: string + enum: + - invited + - enabled + - disabled + - locked + description: User status + UserCreateRequest: + type: object + required: + - username + - email + properties: + username: + type: string + description: The username (required) + password: + type: string + description: The password (not required if internal_password_disabled=true) + email: + type: string + description: The user's email address + groups: + type: array + items: + type: string + description: Groups to add the user to + admin: + type: boolean + default: false + description: Whether the user is an admin + profile_updatable: + type: boolean + default: true + description: Whether the user can update their profile + internal_password_disabled: + type: boolean + default: false + description: Whether internal password is disabled + disable_ui_access: + type: boolean + default: false + description: Whether UI access is disabled + UserListResponse: + type: object + properties: + users: + type: array + items: + type: object + properties: + username: + type: string + uri: + type: string + realm: + type: string + status: + type: string + cursor: + type: string + description: Pagination cursor +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/docs/api-spec/stub/workers-api.yaml new/jfrog-cli-2.115.0/docs/api-spec/stub/workers-api.yaml --- old/jfrog-cli-2.113.0/docs/api-spec/stub/workers-api.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/jfrog-cli-2.115.0/docs/api-spec/stub/workers-api.yaml 2026-07-15 16:07:43.000000000 +0200 @@ -0,0 +1,108 @@ +# Trimmed excerpt of JFrog's public Platform Workers API reference, kept as an +# OSS test fixture for the jfrog-cli apispec package (JGC-525). Not the full spec — +# see docs/api-spec/full/ (populated only in JFrog's internal release build). +openapi: 3.1.0 +info: + title: JFrog Platform - Workers API + description: > + Worker service management APIs for the JFrog Platform. + + + **Authentication:** Access Tokens as bearer token in authorization header + (Authorization: Bearer `<token>`) + + + **Security:** Unless otherwise specified, all APIs require Platform Admin + privileges. + version: 1.0.0 + contact: + name: JFrog Support +servers: + - url: https://{jfrog_url} +tags: + - name: Workers + description: Manage worker services, actions, and executions on the JFrog Platform. +security: + - BearerAuth: [] +paths: + /worker/api/v1/workers: + get: + tags: + - Workers + summary: Get Workers + description: | + Returns a list of all workers. + + + **Security:** Requires Platform Admin privileges. + operationId: getWorkers + responses: + '200': + description: Success + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Worker' + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions + /worker/api/v1/workers/{workerKey}: + delete: + tags: + - Workers + summary: Delete Worker + description: | + Deletes a worker. + + + **Security:** Requires Platform Admin privileges. + operationId: deleteWorker + parameters: + - name: workerKey + in: path + required: true + schema: + type: string + description: The worker key + responses: + '204': + description: Worker deleted + '401': + description: Bad Credentials - Invalid credentials + '403': + description: Permission Denied - Insufficient permissions + '404': + description: Not Found - Worker not found +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + description: Access Token as bearer token + schemas: + Worker: + type: object + properties: + key: + type: string + description: Worker key + description: + type: string + description: Worker description + enabled: + type: boolean + description: Whether the worker is enabled + sourceCode: + type: string + description: Worker source code (TypeScript/JavaScript) + action: + type: string + description: Worker action + filterCriteria: + type: object + description: Filter criteria for the worker +x-readme: + explorer-enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/go.mod new/jfrog-cli-2.115.0/go.mod --- old/jfrog-cli-2.113.0/go.mod 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/go.mod 2026-07-15 16:07:43.000000000 +0200 @@ -1,6 +1,6 @@ module github.com/jfrog/jfrog-cli -go 1.26.3 +go 1.26.5 replace ( // Should not be updated to 0.11.0+ due to default spec version change (1.6 -> 1.7, https://github.com/CycloneDX/cyclonedx-go/pull/257) @@ -18,10 +18,10 @@ github.com/buger/jsonparser v1.2.0 github.com/gocarina/gocsv v0.0.0-20260607070740-0735908c6461 github.com/jfrog/archiver/v3 v3.6.3 - github.com/jfrog/build-info-go v1.13.1-0.20260615080618-42488b58c305 + github.com/jfrog/build-info-go v1.13.1-0.20260713073853-4f3044bf0940 github.com/jfrog/gofrog v1.7.6 - github.com/jfrog/jfrog-cli-application v1.0.2-0.20260707110954-b31a04f5ce6c - github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260708065639-7c53c506fbcf + github.com/jfrog/jfrog-cli-application v1.0.2-0.20260713081138-6df6041db819 + github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260714082320-4fd5a71b4b4a github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260624085155-5ba797de2616 github.com/jfrog/jfrog-cli-evidence v0.9.5-0.20260618135203-4d2bdd4ee35f github.com/jfrog/jfrog-cli-platform-services v1.10.1-0.20260618062042-6053ab368cab @@ -224,7 +224,7 @@ golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.56.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sync v0.21.0 // indirect + golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.46.0 // indirect golang.org/x/term v0.44.0 // indirect golang.org/x/text v0.38.0 // indirect @@ -238,11 +238,11 @@ helm.sh/helm/v3 v3.21.0 // indirect k8s.io/client-go v0.36.1 // indirect k8s.io/klog/v2 v2.140.0 // indirect - oras.land/oras-go/v2 v2.6.0 // indirect + oras.land/oras-go/v2 v2.6.2 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) -// replace github.com/jfrog/jfrog-cli-artifactory => github.com/jfrog/jfrog-cli-artifactory main +// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.13.1-0.20260713063709-f88851cfbd4f //replace github.com/gfleury/go-bitbucket-v1 => github.com/gfleury/go-bitbucket-v1 v0.0.0-20230825095122-9bc1711434ab diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/go.sum new/jfrog-cli-2.115.0/go.sum --- old/jfrog-cli-2.113.0/go.sum 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/go.sum 2026-07-15 16:07:43.000000000 +0200 @@ -394,8 +394,8 @@ github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4= github.com/jfrog/archiver/v3 v3.6.3 h1:hkAmPjBw393tPmQ07JknLNWFNZjXdy2xFEnOW9wwOxI= github.com/jfrog/archiver/v3 v3.6.3/go.mod h1:5V9l+Fte30Y4qe9dUOAd3yNTf8lmtVNuhKNrvI8PMhg= -github.com/jfrog/build-info-go v1.13.1-0.20260615080618-42488b58c305 h1:q7/hTPm6ibQf45CztScTgPb8cAmKIeQ9im0ClISsq7Y= -github.com/jfrog/build-info-go v1.13.1-0.20260615080618-42488b58c305/go.mod h1:CYRUCvLKfyARjoJXLWAxce1qNUxTEtbRKAARkV42vpE= +github.com/jfrog/build-info-go v1.13.1-0.20260713073853-4f3044bf0940 h1:LthrPDN8YjDKrDNzOWS/w9NLFyeebdnWkmp8vhma0qo= +github.com/jfrog/build-info-go v1.13.1-0.20260713073853-4f3044bf0940/go.mod h1:CYRUCvLKfyARjoJXLWAxce1qNUxTEtbRKAARkV42vpE= github.com/jfrog/froggit-go v1.23.0 h1:HGNIP9ZqoXKXHQONazhCENqIrFLfc8J3aX/F0QelQ2s= github.com/jfrog/froggit-go v1.23.0/go.mod h1:wRDryqyp3oe+eHgME2mpnEQmO8XBECIPagFwj0nHmdI= github.com/jfrog/go-mockhttp v0.3.1 h1:/wac8v4GMZx62viZmv4wazB5GNKs+GxawuS1u3maJH8= @@ -404,10 +404,10 @@ github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4= github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYLipdsOFMY= github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w= -github.com/jfrog/jfrog-cli-application v1.0.2-0.20260707110954-b31a04f5ce6c h1:5LZKsRZpwXolMxYwC9f82swfF7UcXQMUZcnZIl4y+Zw= -github.com/jfrog/jfrog-cli-application v1.0.2-0.20260707110954-b31a04f5ce6c/go.mod h1:p8yLtbmCxxQucIbLZKnWu0F+EDtj6NLXbRQCEK/nb6o= -github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260708065639-7c53c506fbcf h1:bj+nN5obLG+O/52ATMT1JzVNBqskeOwliVjEijayPv0= -github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260708065639-7c53c506fbcf/go.mod h1:VqV0Bed11HoBlugAEGa3RumbwnDVslEf0gKocTzLs9s= +github.com/jfrog/jfrog-cli-application v1.0.2-0.20260713081138-6df6041db819 h1:nbhpYN6Sb+oPJWpEHAaNbnwJJ5R2/g/TDnpCKjC/mRA= +github.com/jfrog/jfrog-cli-application v1.0.2-0.20260713081138-6df6041db819/go.mod h1:p8yLtbmCxxQucIbLZKnWu0F+EDtj6NLXbRQCEK/nb6o= +github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260714082320-4fd5a71b4b4a h1:dySEIu0wXHrPr3P1ZdXeMhcriWHJrr1N43oPLEi8QhQ= +github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260714082320-4fd5a71b4b4a/go.mod h1:BJ8x7NhWxJvhG5Bjca2GwWlZN2bxlo+8AnpuRnZ9RMM= github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260624085155-5ba797de2616 h1:bioFXGzf3pF2qnC3LZD1S1saWiHSekL4vdsDSWksj/4= github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260624085155-5ba797de2616/go.mod h1:9R90mhbczGXwW5EGlDs7F08ejQU/xdoDhYHMvzBiqgE= github.com/jfrog/jfrog-cli-evidence v0.9.5-0.20260618135203-4d2bdd4ee35f h1:MV4BATdkEoUYJmdPDvaB9EBb8JQZg28n/K4X7dcmyAY= @@ -788,8 +788,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= -golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -885,8 +885,8 @@ k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= -oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc= -oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o= +oras.land/oras-go/v2 v2.6.2 h1:N04RXngAp1LJKTG6ifz3xHPipasEkWr+hFmInja5YKo= +oras.land/oras-go/v2 v2.6.2/go.mod h1:PlTtg4JTDJkDe8yVHpM2wz7/YDc00GVas+i4jAW2TZ4= pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jfrog-cli-2.113.0/utils/cliutils/cli_consts.go new/jfrog-cli-2.115.0/utils/cliutils/cli_consts.go --- old/jfrog-cli-2.113.0/utils/cliutils/cli_consts.go 2026-07-08 13:49:01.000000000 +0200 +++ new/jfrog-cli-2.115.0/utils/cliutils/cli_consts.go 2026-07-15 16:07:43.000000000 +0200 @@ -4,7 +4,7 @@ const ( // General CLI constants - CliVersion = "2.113.0" + CliVersion = "2.115.0" ClientAgent = "jfrog-cli-go" // CLI base commands constants: ++++++ jfrog-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.QHX8Zw/_old 2026-07-17 01:42:58.544241483 +0200 +++ /var/tmp/diff_new_pack.QHX8Zw/_new 2026-07-17 01:42:58.552241753 +0200 @@ -1,5 +1,5 @@ name: jfrog-cli -version: 2.113.0 -mtime: 1783511341 -commit: 9cd75bda20ff5fe8f9a7dd8f68e58a8c11dc44e5 +version: 2.115.0 +mtime: 1784124463 +commit: c338314207387d39d2fd94f8985da7f9f71cba6d ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/jfrog-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.jfrog-cli.new.24530/vendor.tar.gz differ: char 26, line 1
