Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gh for openSUSE:Factory checked in 
at 2024-08-05 17:21:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gh (Old)
 and      /work/SRC/openSUSE:Factory/.gh.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gh"

Mon Aug  5 17:21:43 2024 rev:59 rq:1191538 version:2.54.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/gh/gh.changes    2024-07-22 17:15:45.311881676 
+0200
+++ /work/SRC/openSUSE:Factory/.gh.new.7232/gh.changes  2024-08-05 
17:22:11.777388279 +0200
@@ -1,0 +2,41 @@
+Sat Aug 03 08:26:20 UTC 2024 - pdos...@suse.com
+
+- Reenable TestGetTrustedRoot test
+- Update to version 2.54.0:
+  * update test and remove logic to check SourceRepositoryOwnerURI is empty 
string
+  * update test
+  * minor fix
+  * update test
+  * added
+  * handle attest case insensitivity
+  * Fix missing variable
+  * Use closure-scoped variable to catch `--remove-milestone` option
+  * Use closure-scoped variable to catch `--remove-milestone` option
+  * build(deps): bump github.com/google/go-containerregistry
+  * Verify `--milestone` and `--remove-milestone` are not assignable at the 
same time
+  * Assert correct parsing of `--remove-milestone` option
+  * Verify `--body` and `--body-file` are not assignable at the same time
+  * Add `--remove-milestone` option
+  * Improve `--remove-milestone` option description
+  * Point to `Editable.MilestoneId` method
+  * build(deps): bump github.com/gabriel-vasile/mimetype from 1.4.4 to 1.4.5
+  * Update sigstore-go in gh CLI to v0.5.1 (#9366)
+  * Handle `--bare` clone targets (#9271)
+  * Slightly clarify when CLI will exit with 4
+  * Export databaseId for releases
+  * Alphabetise release json fields
+  * Add test for release view json export fields
+  * Expose fullDatabaseId for PR json export
+  * Add examples for template usage in PR and issue creation
+  * document exit code behavior
+  * Update documentation for gh api PATCH
+  * Exit with 1 on authentication failure
+  * Verify `--milestone` and `--remove-milestone` are not assignable at the 
same time
+  * Assert correct parsing of `--remove-milestone` option
+  * Add `--remove-milestone` option
+  * Remove unused expected `output` from test case (with `wantsErr: true`)
+  * Verify `--body` and `--body-file` are not assignable at the same time
+  * Remove attestation test that requires being online (#9340)
+  * Remove redundant whitespace
+
+-------------------------------------------------------------------

Old:
----
  cli-2.53.0.tar.zst

New:
----
  cli-2.54.0.tar.zst

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gh.spec ++++++
--- /var/tmp/diff_new_pack.YUDczw/_old  2024-08-05 17:22:21.837800480 +0200
+++ /var/tmp/diff_new_pack.YUDczw/_new  2024-08-05 17:22:21.837800480 +0200
@@ -20,7 +20,7 @@
 %define goflags "-buildmode=pie -trimpath -mod=vendor -modcacherw"
 %define sname cli
 Name:           gh
-Version:        2.53.0
+Version:        2.54.0
 Release:        0
 Summary:        The official CLI for GitHub
 License:        MIT
@@ -91,7 +91,7 @@
 cp share/man/man1/* %{buildroot}%{_mandir}/man1
 
 %check
-GOFLAGS=%{goflags} go test ./... -skip="TestGetTrustedRoot"
+GOFLAGS=%{goflags} make test
 
 %files
 %doc README.md

++++++ _service ++++++
--- /var/tmp/diff_new_pack.YUDczw/_old  2024-08-05 17:22:21.873801955 +0200
+++ /var/tmp/diff_new_pack.YUDczw/_new  2024-08-05 17:22:21.873801955 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/cli/cli</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v2.53.0</param>
+    <param name="revision">v2.54.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>
@@ -16,7 +16,7 @@
     <param name="compression">zst</param>
   </service>
   <service name="go_modules" mode="manual">
-    <param name="archive">cli-2.53.0.tar.zst</param>
+    <param name="archive">cli-2.54.0.tar.zst</param>
   </service>
 </services>
 

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.YUDczw/_old  2024-08-05 17:22:21.897802939 +0200
+++ /var/tmp/diff_new_pack.YUDczw/_new  2024-08-05 17:22:21.901803102 +0200
@@ -1,7 +1,7 @@
 <servicedata>
   <service name="tar_scm">
     <param name="url">https://github.com/cli/cli</param>
-    <param 
name="changesrevision">d3d73d9390bd5403ad8cc4240a9e5cc94bb33ef8</param>
+    <param 
name="changesrevision">89cbcfe7eb186ff4edbe10792d17bdc55b04f297</param>
   </service>
 </servicedata>
 (No newline at EOF)

++++++ cli-2.53.0.tar.zst -> cli-2.54.0.tar.zst ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/.github/workflows/lint.yml 
new/cli-2.54.0/.github/workflows/lint.yml
--- old/cli-2.53.0/.github/workflows/lint.yml   2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/.github/workflows/lint.yml   2024-08-01 00:19:49.000000000 
+0200
@@ -32,7 +32,7 @@
           go mod verify
           go mod download
 
-          LINT_VERSION=1.54.1
+          LINT_VERSION=1.59.1
           curl -fsSL 
https://github.com/golangci/golangci-lint/releases/download/v${LINT_VERSION}/golangci-lint-${LINT_VERSION}-linux-amd64.tar.gz
 | \
             tar xz --strip-components 1 --wildcards \*/golangci-lint
           mkdir -p bin && mv golangci-lint bin/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/api/queries_pr.go 
new/cli-2.54.0/api/queries_pr.go
--- old/cli-2.53.0/api/queries_pr.go    2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/api/queries_pr.go    2024-08-01 00:19:49.000000000 +0200
@@ -26,6 +26,7 @@
 
 type PullRequest struct {
        ID                  string
+       FullDatabaseID      string
        Number              int
        Title               string
        State               string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/api/query_builder.go 
new/cli-2.54.0/api/query_builder.go
--- old/cli-2.53.0/api/query_builder.go 2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/api/query_builder.go 2024-08-01 00:19:49.000000000 +0200
@@ -289,6 +289,7 @@
        "commits",
        "deletions",
        "files",
+       "fullDatabaseId",
        "headRefName",
        "headRefOid",
        "headRepository",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/git/client.go new/cli-2.54.0/git/client.go
--- old/cli-2.53.0/git/client.go        2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/git/client.go        2024-08-01 00:19:49.000000000 +0200
@@ -11,6 +11,7 @@
        "path"
        "regexp"
        "runtime"
+       "slices"
        "sort"
        "strings"
        "sync"
@@ -594,6 +595,10 @@
                cloneArgs = append(cloneArgs, target)
        } else {
                target = path.Base(strings.TrimSuffix(cloneURL, ".git"))
+
+               if slices.Contains(cloneArgs, "--bare") {
+                       target += ".git"
+               }
        }
        cloneArgs = append([]string{"clone"}, cloneArgs...)
        cmd, err := c.AuthenticatedCommand(ctx, cloneArgs...)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/git/client_test.go 
new/cli-2.54.0/git/client_test.go
--- old/cli-2.53.0/git/client_test.go   2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/git/client_test.go   2024-08-01 00:19:49.000000000 +0200
@@ -1267,6 +1267,7 @@
 func TestClientClone(t *testing.T) {
        tests := []struct {
                name          string
+               args          []string
                mods          []CommandModifier
                cmdExitStatus int
                cmdStdout     string
@@ -1277,22 +1278,37 @@
        }{
                {
                        name:        "clone",
+                       args:        []string{},
                        wantCmdArgs: `path/to/git -c credential.helper= -c 
credential.helper=!"gh" auth git-credential clone github.com/cli/cli`,
                        wantTarget:  "cli",
                },
                {
                        name:        "accepts command modifiers",
+                       args:        []string{},
                        mods:        
[]CommandModifier{WithRepoDir("/path/to/repo")},
                        wantCmdArgs: `path/to/git -C /path/to/repo -c 
credential.helper= -c credential.helper=!"gh" auth git-credential clone 
github.com/cli/cli`,
                        wantTarget:  "cli",
                },
                {
                        name:          "git error",
+                       args:          []string{},
                        cmdExitStatus: 1,
                        cmdStderr:     "git error message",
                        wantCmdArgs:   `path/to/git -c credential.helper= -c 
credential.helper=!"gh" auth git-credential clone github.com/cli/cli`,
                        wantErrorMsg:  "failed to run git: git error message",
                },
+               {
+                       name:        "bare clone",
+                       args:        []string{"--bare"},
+                       wantCmdArgs: `path/to/git -c credential.helper= -c 
credential.helper=!"gh" auth git-credential clone --bare github.com/cli/cli`,
+                       wantTarget:  "cli.git",
+               },
+               {
+                       name:        "bare clone with explicit target",
+                       args:        []string{"cli-bare", "--bare"},
+                       wantCmdArgs: `path/to/git -c credential.helper= -c 
credential.helper=!"gh" auth git-credential clone --bare github.com/cli/cli 
cli-bare`,
+                       wantTarget:  "cli-bare",
+               },
        }
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
@@ -1301,7 +1317,7 @@
                                GitPath:        "path/to/git",
                                commandContext: cmdCtx,
                        }
-                       target, err := client.Clone(context.Background(), 
"github.com/cli/cli", []string{}, tt.mods...)
+                       target, err := client.Clone(context.Background(), 
"github.com/cli/cli", tt.args, tt.mods...)
                        assert.Equal(t, tt.wantCmdArgs, 
strings.Join(cmd.Args[3:], " "))
                        if tt.wantErrorMsg == "" {
                                assert.NoError(t, err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/go.mod new/cli-2.54.0/go.mod
--- old/cli-2.53.0/go.mod       2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/go.mod       2024-08-01 00:19:49.000000000 +0200
@@ -1,14 +1,14 @@
 module github.com/cli/cli/v2
 
-go 1.22
+go 1.22.0
 
-toolchain go1.22.2
+toolchain go1.22.5
 
 require (
        github.com/AlecAivazis/survey/v2 v2.3.7
        github.com/MakeNowJust/heredoc v1.0.0
        github.com/briandowns/spinner v1.18.1
-       github.com/cenkalti/backoff/v4 v4.2.1
+       github.com/cenkalti/backoff/v4 v4.3.0
        github.com/charmbracelet/glamour v0.7.0
        github.com/charmbracelet/lipgloss v0.10.1-0.20240413172830-d0be07ea6b9c
        github.com/cli/go-gh/v2 v2.9.0
@@ -17,10 +17,10 @@
        github.com/cpuguy83/go-md2man/v2 v2.0.4
        github.com/creack/pty v1.1.21
        github.com/distribution/reference v0.5.0
-       github.com/gabriel-vasile/mimetype v1.4.4
+       github.com/gabriel-vasile/mimetype v1.4.5
        github.com/gdamore/tcell/v2 v2.5.4
        github.com/google/go-cmp v0.6.0
-       github.com/google/go-containerregistry v0.19.2
+       github.com/google/go-containerregistry v0.20.1
        github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
        github.com/gorilla/websocket v1.5.3
        github.com/hashicorp/go-multierror v1.1.1
@@ -38,16 +38,16 @@
        github.com/rivo/tview v0.0.0-20221029100920-c4a7e501810d
        github.com/shurcooL/githubv4 v0.0.0-20240120211514-18a1ae0e79dc
        github.com/sigstore/protobuf-specs v0.3.2
-       github.com/sigstore/sigstore-go v0.3.0
+       github.com/sigstore/sigstore-go v0.5.1
        github.com/spf13/cobra v1.8.1
        github.com/spf13/pflag v1.0.5
        github.com/stretchr/testify v1.9.0
        github.com/zalando/go-keyring v0.2.5
-       golang.org/x/crypto v0.23.0
-       golang.org/x/sync v0.6.0
-       golang.org/x/term v0.20.0
-       golang.org/x/text v0.15.0
-       google.golang.org/grpc v1.62.2
+       golang.org/x/crypto v0.25.0
+       golang.org/x/sync v0.7.0
+       golang.org/x/term v0.22.0
+       golang.org/x/text v0.16.0
+       google.golang.org/grpc v1.64.1
        google.golang.org/protobuf v1.34.2
        gopkg.in/h2non/gock.v1 v1.1.2
        gopkg.in/yaml.v3 v3.0.1
@@ -78,6 +78,7 @@
        github.com/fsnotify/fsnotify v1.7.0 // indirect
        github.com/gdamore/encoding v1.0.0 // indirect
        github.com/go-chi/chi v4.1.2+incompatible // indirect
+       github.com/go-jose/go-jose/v4 v4.0.2 // indirect
        github.com/go-logr/logr v1.4.1 // indirect
        github.com/go-logr/stdr v1.2.2 // indirect
        github.com/go-openapi/analysis v0.23.0 // indirect
@@ -91,8 +92,7 @@
        github.com/go-openapi/swag v0.23.0 // indirect
        github.com/go-openapi/validate v0.24.0 // indirect
        github.com/godbus/dbus/v5 v5.1.0 // indirect
-       github.com/golang/protobuf v1.5.4 // indirect
-       github.com/google/certificate-transparency-go v1.1.8 // indirect
+       github.com/google/certificate-transparency-go v1.2.1 // indirect
        github.com/google/uuid v1.6.0 // indirect
        github.com/gorilla/css v1.0.0 // indirect
        github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect
@@ -106,7 +106,7 @@
        github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b // 
indirect
        github.com/josharian/intern v1.0.0 // indirect
        github.com/klauspost/compress v1.17.4 // indirect
-       github.com/letsencrypt/boulder v0.0.0-20230907030200-6d76a0f91e1e // 
indirect
+       github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // 
indirect
        github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
        github.com/magiconair/properties v1.8.7 // indirect
        github.com/mailru/easyjson v0.7.7 // indirect
@@ -133,7 +133,7 @@
        github.com/shibumi/go-pathspec v1.3.0 // indirect
        github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // 
indirect
        github.com/sigstore/rekor v1.3.6 // indirect
-       github.com/sigstore/sigstore v1.8.3 // indirect
+       github.com/sigstore/sigstore v1.8.7 // indirect
        github.com/sigstore/timestamp-authority v1.2.2 // indirect
        github.com/sirupsen/logrus v1.9.3 // indirect
        github.com/sourcegraph/conc v0.3.0 // indirect
@@ -143,7 +143,7 @@
        github.com/stretchr/objx v0.5.2 // indirect
        github.com/subosito/gotenv v1.6.0 // indirect
        github.com/theupdateframework/go-tuf v0.7.0 // indirect
-       github.com/theupdateframework/go-tuf/v2 
v2.0.0-20240223092044-1e7978e83f63 // indirect
+       github.com/theupdateframework/go-tuf/v2 v2.0.0 // indirect
        github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e 
// indirect
        github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // 
indirect
        github.com/transparency-dev/merkle v0.0.2 // indirect
@@ -151,18 +151,17 @@
        github.com/yuin/goldmark v1.5.4 // indirect
        github.com/yuin/goldmark-emoji v1.0.2 // indirect
        go.mongodb.org/mongo-driver v1.14.0 // indirect
-       go.opentelemetry.io/otel v1.24.0 // indirect
-       go.opentelemetry.io/otel/metric v1.24.0 // indirect
-       go.opentelemetry.io/otel/trace v1.24.0 // indirect
+       go.opentelemetry.io/otel v1.27.0 // indirect
+       go.opentelemetry.io/otel/metric v1.27.0 // indirect
+       go.opentelemetry.io/otel/trace v1.27.0 // indirect
        go.uber.org/multierr v1.11.0 // indirect
        go.uber.org/zap v1.27.0 // indirect
-       golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
-       golang.org/x/mod v0.17.0 // indirect
-       golang.org/x/net v0.25.0 // indirect
-       golang.org/x/sys v0.20.0 // indirect
-       google.golang.org/genproto/googleapis/api 
v0.0.0-20240311173647-c811ad7063a7 // indirect
-       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240318140521-94a12d6c2237 // indirect
-       gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
+       golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 // indirect
+       golang.org/x/mod v0.19.0 // indirect
+       golang.org/x/net v0.27.0 // indirect
+       golang.org/x/sys v0.22.0 // indirect
+       google.golang.org/genproto/googleapis/api 
v0.0.0-20240520151616-dc85e6b867a5 // indirect
+       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240520151616-dc85e6b867a5 // indirect
        gopkg.in/ini.v1 v1.67.0 // indirect
        k8s.io/klog/v2 v2.120.1 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/go.sum new/cli-2.54.0/go.sum
--- old/cli-2.53.0/go.sum       2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/go.sum       2024-08-01 00:19:49.000000000 +0200
@@ -1,6 +1,6 @@
 cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
-cloud.google.com/go/compute v1.25.0 
h1:H1/4SqSUhjPFE7L5ddzHOfY2bCAvjwNRZPNl6Ni5oYU=
-cloud.google.com/go/compute v1.25.0/go.mod 
h1:GR7F0ZPZH8EhChlMo9FkLd7eUTwEymjqQagxzilIxIE=
+cloud.google.com/go/compute v1.25.1 
h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU=
+cloud.google.com/go/compute v1.25.1/go.mod 
h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls=
 cloud.google.com/go/compute/metadata v0.2.3 
h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
 cloud.google.com/go/compute/metadata v0.2.3/go.mod 
h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=
@@ -42,34 +42,34 @@
 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod 
h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
 github.com/aws/aws-sdk-go v1.51.6 
h1:Ld36dn9r7P9IjU8WZSaswQ8Y/XUCRpewim5980DwYiU=
 github.com/aws/aws-sdk-go v1.51.6/go.mod 
h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
-github.com/aws/aws-sdk-go-v2 v1.26.0 
h1:/Ce4OCiM3EkpW7Y+xUnfAFpchU78K7/Ug01sZni9PgA=
-github.com/aws/aws-sdk-go-v2 v1.26.0/go.mod 
h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I=
-github.com/aws/aws-sdk-go-v2/config v1.27.9 
h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg=
-github.com/aws/aws-sdk-go-v2/config v1.27.9/go.mod 
h1:dK1FQfpwpql83kbD873E9vz4FyAxuJtR22wzoXn3qq0=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.9 
h1:N8s0/7yW+h8qR8WaRlPQeJ6czVMNQVNtNdUqf6cItao=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.9/go.mod 
h1:446YhIdmSV0Jf/SLafGZalQo+xr2iw7/fzXGDPTU1yQ=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 
h1:af5YzcLf80tv4Em4jWVD75lpnOHSBkPUZxZfGkrI3HI=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0/go.mod 
h1:nQ3how7DMnFMWiU1SpECohgC82fpn4cKZ875NDMmwtA=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 
h1:0ScVK/4qZ8CIW0k8jOeFVsyS/sAiXpYxRBLolMkuLQM=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4/go.mod 
h1:84KyjNZdHC6QZW08nfHI6yZgPd+qRgaWcYsyLUo3QY8=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 
h1:sHmMWWX5E7guWEFQ9SVo6A3S4xpPrWnd77a6y4WM6PU=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4/go.mod 
h1:WjpDrhWisWOIoS9n3nk67A3Ll1vfULJ9Kq6h29HTD48=
+github.com/aws/aws-sdk-go-v2 v1.27.2 
h1:pLsTXqX93rimAOZG2FIYraDQstZaaGVVN4tNw65v0h8=
+github.com/aws/aws-sdk-go-v2 v1.27.2/go.mod 
h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
+github.com/aws/aws-sdk-go-v2/config v1.27.18 
h1:wFvAnwOKKe7QAyIxziwSKjmer9JBMH1vzIL6W+fYuKk=
+github.com/aws/aws-sdk-go-v2/config v1.27.18/go.mod 
h1:0xz6cgdX55+kmppvPm2IaKzIXOheGJhAufacPJaXZ7c=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.18 
h1:D/ALDWqK4JdY3OFgA2thcPO1c9aYTT5STS/CvnkqY1c=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.18/go.mod 
h1:JuitCWq+F5QGUrmMPsk945rop6bB57jdscu+Glozdnc=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 
h1:dDgptDO9dxeFkXy+tEgVkzSClHZje/6JkPW5aZyEvrQ=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5/go.mod 
h1:gjvE2KBUgUQhcv89jqxrIxH9GaKs1JbZzWejj/DaHGA=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 
h1:cy8ahBJuhtM8GTTSyOkfy6WVPV1IE+SS5/wfXUYuulw=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9/go.mod 
h1:CZBXGLaJnEZI6EVNcPd7a6B5IC5cA/GkRWtu9fp3S6Y=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 
h1:A4SYk07ef04+vxZToz9LWvAXl9LW0NClpPpMsi31cz0=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9/go.mod 
h1:5jJcHuwDagxN+ErjQ3PU3ocf6Ylc/p9x+BLO/+X4iXw=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 
h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod 
h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 
h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod 
h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 
h1:b+E7zIUHMmcB4Dckjpkapoy47W6C9QBv/zoUP+Hn8Kc=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6/go.mod 
h1:S2fNV0rxrP78NhPbCZeQgY8H9jdDMeGtwcfZIRxzBqU=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 
h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod 
h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 
h1:o4T+fKxA3gTMcluBNZZXE9DNaMkJuUL1O3mffCUjoJo=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11/go.mod 
h1:84oZdJ+VjuJKs9v1UTC9NaodRZRseOXCTgku+vQJWR8=
 github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 
h1:yS0JkEdV6h9JOo8sy2JSpjX+i7vsKifU8SIeHrqiDhU=
 github.com/aws/aws-sdk-go-v2/service/kms v1.30.0/go.mod 
h1:+I8VUUSVD4p5ISQtzpgSva4I8cJ4SQ4b1dcBcof7O+g=
-github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 
h1:mnbuWHOcM70/OFUlZZ5rcdfA8PflGXXiefU/O+1S3+8=
-github.com/aws/aws-sdk-go-v2/service/sso v1.20.3/go.mod 
h1:5HFu51Elk+4oRBZVxmHrSds5jFXmFj8C3w7DVF2gnrs=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 
h1:uLq0BKatTmDzWa/Nu4WO0M1AaQDaPpwTKAeByEc6WFM=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3/go.mod 
h1:b+qdhjnxj8GSR6t5YfphOffeoQSQ1KmpoVVuBn+PWxs=
-github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 
h1:J/PpTf/hllOjx8Xu9DMflff3FajfLxqM5+tepvVXmxg=
-github.com/aws/aws-sdk-go-v2/service/sts v1.28.5/go.mod 
h1:0ih0Z83YDH/QeQ6Ori2yGE2XvWYv/Xm+cZc01LC6oK0=
-github.com/aws/smithy-go v1.20.1 
h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw=
-github.com/aws/smithy-go v1.20.1/go.mod 
h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
+github.com/aws/aws-sdk-go-v2/service/sso v1.20.11 
h1:gEYM2GSpr4YNWc6hCd5nod4+d4kd9vWIAWrmGuLdlMw=
+github.com/aws/aws-sdk-go-v2/service/sso v1.20.11/go.mod 
h1:gVvwPdPNYehHSP9Rs7q27U1EU+3Or2ZpXvzAYJNh63w=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5 
h1:iXjh3uaH3vsVcnyZX7MqCoCfcyxIrVE9iOQruRaWPrQ=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5/go.mod 
h1:5ZXesEuy/QcO0WUnt+4sDkxhdXRHTu2yG0uCSH8B6os=
+github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 
h1:M/1u4HBpwLuMtjlxuI2y6HoVLzF5e2mfxHCg7ZVMYmk=
+github.com/aws/aws-sdk-go-v2/service/sts v1.28.12/go.mod 
h1:kcfd+eTdEi/40FIbLq4Hif3XMXnl5b/+t/KTfLt9xIk=
+github.com/aws/smithy-go v1.20.2 
h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q=
+github.com/aws/smithy-go v1.20.2/go.mod 
h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1 
h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod 
h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
 github.com/aymerick/douceur v0.2.0 
h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
@@ -82,8 +82,8 @@
 github.com/briandowns/spinner v1.18.1/go.mod 
h1:mQak9GHqbspjC/5iUx3qMlIho8xBS/ppAL/hX5SmPJU=
 github.com/cenkalti/backoff/v3 v3.2.2 
h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M=
 github.com/cenkalti/backoff/v3 v3.2.2/go.mod 
h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
-github.com/cenkalti/backoff/v4 v4.2.1 
h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
-github.com/cenkalti/backoff/v4 v4.2.1/go.mod 
h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+github.com/cenkalti/backoff/v4 v4.3.0 
h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
+github.com/cenkalti/backoff/v4 v4.3.0/go.mod 
h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
 github.com/cespare/xxhash/v2 v2.2.0 
h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
 github.com/cespare/xxhash/v2 v2.2.0/go.mod 
h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/charmbracelet/glamour v0.7.0 
h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng=
@@ -148,8 +148,8 @@
 github.com/frankban/quicktest v1.14.6/go.mod 
h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
 github.com/fsnotify/fsnotify v1.7.0 
h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
 github.com/fsnotify/fsnotify v1.7.0/go.mod 
h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/gabriel-vasile/mimetype v1.4.4 
h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I=
-github.com/gabriel-vasile/mimetype v1.4.4/go.mod 
h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s=
+github.com/gabriel-vasile/mimetype v1.4.5 
h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4=
+github.com/gabriel-vasile/mimetype v1.4.5/go.mod 
h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4=
 github.com/gdamore/encoding v1.0.0 
h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
 github.com/gdamore/encoding v1.0.0/go.mod 
h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
 github.com/gdamore/tcell/v2 v2.5.4 
h1:TGU4tSjD3sCL788vFNeJnTdzpNKIw1H5dgLnJRQVv/k=
@@ -158,6 +158,8 @@
 github.com/go-chi/chi v4.1.2+incompatible/go.mod 
h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
 github.com/go-jose/go-jose/v3 v3.0.3 
h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
 github.com/go-jose/go-jose/v3 v3.0.3/go.mod 
h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
+github.com/go-jose/go-jose/v4 v4.0.2 
h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk=
+github.com/go-jose/go-jose/v4 v4.0.2/go.mod 
h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY=
 github.com/go-logr/logr v1.2.2/go.mod 
h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
 github.com/go-logr/logr v1.4.1/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -183,8 +185,10 @@
 github.com/go-openapi/swag v0.23.0/go.mod 
h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
 github.com/go-openapi/validate v0.24.0 
h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
 github.com/go-openapi/validate v0.24.0/go.mod 
h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
-github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
-github.com/go-test/deep v1.1.0/go.mod 
h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
+github.com/go-sql-driver/mysql v1.8.1 
h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
+github.com/go-sql-driver/mysql v1.8.1/go.mod 
h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
+github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
+github.com/go-test/deep v1.1.1/go.mod 
h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
 github.com/godbus/dbus/v5 v5.1.0 
h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
 github.com/godbus/dbus/v5 v5.1.0/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/golang-jwt/jwt/v5 v5.2.1 
h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
@@ -193,12 +197,12 @@
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/protobuf v1.5.4 
h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 github.com/golang/protobuf v1.5.4/go.mod 
h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/google/certificate-transparency-go v1.1.8 
h1:LGYKkgZF7satzgTak9R4yzfJXEeYVAjV6/EAEJOf1to=
-github.com/google/certificate-transparency-go v1.1.8/go.mod 
h1:bV/o8r0TBKRf1X//iiiSgWrvII4d7/8OiA+3vG26gI8=
+github.com/google/certificate-transparency-go v1.2.1 
h1:4iW/NwzqOqYEEoCBEFP+jPbBXbLqMpq3CifMyOnDUME=
+github.com/google/certificate-transparency-go v1.2.1/go.mod 
h1:bvn/ytAccv+I6+DGkqpvSsEdiVGramgaSC6RD3tEmeE=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.19.2 
h1:TannFKE1QSajsP6hPWb5oJNgKe1IKjHukIKDUmvsV6w=
-github.com/google/go-containerregistry v0.19.2/go.mod 
h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
+github.com/google/go-containerregistry v0.20.1 
h1:eTgx9QNYugV4DN5mz4U8hiAGTi1ybXn0TPi4Smd8du0=
+github.com/google/go-containerregistry v0.20.1/go.mod 
h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 github.com/google/gofuzz v1.2.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
@@ -242,6 +246,9 @@
 github.com/hashicorp/go-sockaddr v1.0.2/go.mod 
h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A=
 github.com/hashicorp/go-version v1.3.0 
h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw=
 github.com/hashicorp/go-version v1.3.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/golang-lru v0.5.4 
h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
+github.com/hashicorp/golang-lru/v2 v2.0.7 
h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
+github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod 
h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
 github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 github.com/hashicorp/hcl v1.0.0/go.mod 
h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 github.com/hashicorp/vault/api v1.12.2 
h1:7YkCTE5Ni90TcmYHDBExdt4WGJxhpzaHqR6uGbQb/rE=
@@ -284,8 +291,8 @@
 github.com/kr/text v0.2.0/go.mod 
h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/kylelemons/godebug v1.1.0 
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
 github.com/kylelemons/godebug v1.1.0/go.mod 
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/letsencrypt/boulder v0.0.0-20230907030200-6d76a0f91e1e 
h1:RLTpX495BXToqxpM90Ws4hXEo4Wfh81jr9DX1n/4WOo=
-github.com/letsencrypt/boulder v0.0.0-20230907030200-6d76a0f91e1e/go.mod 
h1:EAuqr9VFWxBi9nD5jc/EA2MT1RFty9288TF6zdtYoCU=
+github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec 
h1:2tTW6cDth2TSgRbAhD7yjZzTQmcN25sDRPEeinR51yQ=
+github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec/go.mod 
h1:TmwEoGCwIti7BCeJ9hescZgRtatxRE+A72pCoPfmcfk=
 github.com/lucasb-eyer/go-colorful v1.2.0 
h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
 github.com/magiconair/properties v1.8.7 
h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
@@ -342,8 +349,8 @@
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 
h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.19.0 
h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
-github.com/prometheus/client_golang v1.19.0/go.mod 
h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
+github.com/prometheus/client_golang v1.19.1 
h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
+github.com/prometheus/client_golang v1.19.1/go.mod 
h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
 github.com/prometheus/client_model v0.5.0 
h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
 github.com/prometheus/client_model v0.5.0/go.mod 
h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
 github.com/prometheus/common v0.48.0 
h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
@@ -386,10 +393,10 @@
 github.com/sigstore/protobuf-specs v0.3.2/go.mod 
h1:RZ0uOdJR4OB3tLQeAyWoJFbNCBFrPQdcokntde4zRBA=
 github.com/sigstore/rekor v1.3.6 
h1:QvpMMJVWAp69a3CHzdrLelqEqpTM3ByQRt5B5Kspbi8=
 github.com/sigstore/rekor v1.3.6/go.mod 
h1:JDTSNNMdQ/PxdsS49DJkJ+pRJCO/83nbR5p3aZQteXc=
-github.com/sigstore/sigstore v1.8.3 
h1:G7LVXqL+ekgYtYdksBks9B38dPoIsbscjQJX/MGWkA4=
-github.com/sigstore/sigstore v1.8.3/go.mod 
h1:mqbTEariiGA94cn6G3xnDiV6BD8eSLdL/eA7bvJ0fVs=
-github.com/sigstore/sigstore-go v0.3.0 
h1:SxYqfonBrEhw8bNDelMieymxhdv7R9itiNZmtjOwKKU=
-github.com/sigstore/sigstore-go v0.3.0/go.mod 
h1:oJOH7UP8aTjAGnIVwq9sDif8M4CSCik84yN1vBuESbE=
+github.com/sigstore/sigstore v1.8.7 
h1:L7/zKauHTg0d0Hukx7qlR4nifh6T6O6UIt9JBwAmTIg=
+github.com/sigstore/sigstore v1.8.7/go.mod 
h1:MPiQ/NIV034Fc3Kk2IX9/XmBQdK60wfmpvgK9Z1UjRA=
+github.com/sigstore/sigstore-go v0.5.1 
h1:5IhKvtjlQBeLnjKkzMELNG4tIBf+xXQkDzhLV77+/8Y=
+github.com/sigstore/sigstore-go v0.5.1/go.mod 
h1:TuOfV7THHqiDaUHuJ5+QN23RP/YoKmsbwJpY+aaYPN0=
 github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3 
h1:LTfPadUAo+PDRUbbdqbeSl2OuoFQwUFTnJ4stu+nwWw=
 github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3/go.mod 
h1:QV/Lxlxm0POyhfyBtIbTWxNeF18clMlkkyL9mu45y18=
 github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3 
h1:xgbPRCr2npmmsuVVteJqi/ERw9+I13Wou7kq0Yk4D8g=
@@ -433,8 +440,8 @@
 github.com/subosito/gotenv v1.6.0/go.mod 
h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
 github.com/theupdateframework/go-tuf v0.7.0 
h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI=
 github.com/theupdateframework/go-tuf v0.7.0/go.mod 
h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug=
-github.com/theupdateframework/go-tuf/v2 v2.0.0-20240223092044-1e7978e83f63 
h1:27XWhDZHPD+cufF6qSdYx6PgGQvD2jJ6pq9sDvR6VBk=
-github.com/theupdateframework/go-tuf/v2 
v2.0.0-20240223092044-1e7978e83f63/go.mod 
h1:+gWwqe1pk4nvGeOKosGJqPgD+N/kbD9M0QVLL9TGIYU=
+github.com/theupdateframework/go-tuf/v2 v2.0.0 
h1:rD8d9RotYBprZVgC+9oyTZ5MmawepnTSTqoDuxjWgbs=
+github.com/theupdateframework/go-tuf/v2 v2.0.0/go.mod 
h1:baB22nBHeHBCeuGZcIlctNq4P61PcOdyARlplg5xmLA=
 github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e 
h1:BuzhfgfWQbX0dWzYzT1zsORLnHRv3bcRcsaUk0VmXA8=
 github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e/go.mod 
h1:/Tnicc6m/lsJE0irFMA0LfIwTBo4QP7A8IfyIv4zZKI=
 github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 
h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
@@ -456,18 +463,18 @@
 go.mongodb.org/mongo-driver v1.14.0/go.mod 
h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
 go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
 go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 
v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 
v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 
h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod 
h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
-go.opentelemetry.io/otel v1.24.0 
h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod 
h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
-go.opentelemetry.io/otel/metric v1.24.0 
h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod 
h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 
h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod 
h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 
h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod 
h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 
v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 
v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 
h1:9l89oX4ba9kHbBol3Xin3leYJ+252h0zszDtBwyKe2A=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod 
h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0=
+go.opentelemetry.io/otel v1.27.0 
h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg=
+go.opentelemetry.io/otel v1.27.0/go.mod 
h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ=
+go.opentelemetry.io/otel/metric v1.27.0 
h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik=
+go.opentelemetry.io/otel/metric v1.27.0/go.mod 
h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak=
+go.opentelemetry.io/otel/sdk v1.27.0 
h1:mlk+/Y1gLPLn84U4tI8d3GNJmGT/eXe3ZuOXN9kTWmI=
+go.opentelemetry.io/otel/sdk v1.27.0/go.mod 
h1:Ha9vbLwJE6W86YstIywK2xFfPjbWlCuwPtMkKdz/Y4A=
+go.opentelemetry.io/otel/trace v1.27.0 
h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw=
+go.opentelemetry.io/otel/trace v1.27.0/go.mod 
h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4=
 go.step.sm/crypto v0.44.2 h1:t3p3uQ7raP2jp2ha9P6xkQF85TJZh+87xmjSLaib+jk=
 go.step.sm/crypto v0.44.2/go.mod 
h1:x1439EnFhadzhkuaGX7sz03LEMQ+jV4gRamf5LCZJQQ=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -478,24 +485,24 @@
 go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
-golang.org/x/crypto v0.23.0/go.mod 
h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
-golang.org/x/exp v0.0.0-20231006140011-7918f672742d 
h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
-golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod 
h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
+golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
+golang.org/x/crypto v0.25.0/go.mod 
h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
+golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 
h1:hNQpMuAJe5CtcUqCXaWga3FHu+kQvCqcsoVaQgSV60o=
+golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod 
h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod 
h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
+golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod 
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod 
h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
+golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
+golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
+golang.org/x/oauth2 v0.21.0/go.mod 
h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 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=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -507,46 +514,42 @@
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
-golang.org/x/term v0.20.0/go.mod 
h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
+golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
+golang.org/x/term v0.22.0/go.mod 
h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod 
h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod 
h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
 golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
 golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
-golang.org/x/tools v0.16.1/go.mod 
h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d 
h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod 
h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk=
 google.golang.org/api v0.172.0/go.mod 
h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis=
-google.golang.org/appengine v1.6.8 
h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
-google.golang.org/appengine v1.6.8/go.mod 
h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
 google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 
h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s=
 google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod 
h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U=
-google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 
h1:oqta3O3AnlWbmIE3bFnWbu4bRxZjfbWCp0cKSuZh01E=
-google.golang.org/genproto/googleapis/api 
v0.0.0-20240311173647-c811ad7063a7/go.mod 
h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 
h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240318140521-94a12d6c2237/go.mod 
h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
-google.golang.org/grpc v1.62.2 h1:iEIj1U5qjyBjzkM5nk3Fq+S1IbjbXSyqeULZ1Nfo4AA=
-google.golang.org/grpc v1.62.2/go.mod 
h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/genproto/googleapis/api v0.0.0-20240520151616-dc85e6b867a5 
h1:P8OJ/WCl/Xo4E4zoe4/bifHpSmmKwARqyqE4nW6J2GQ=
+google.golang.org/genproto/googleapis/api 
v0.0.0-20240520151616-dc85e6b867a5/go.mod 
h1:RGnPtTG7r4i8sPlNyDeikXF99hMM+hN6QMm4ooG9g2g=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240520151616-dc85e6b867a5 
h1:Q2RxlXqh1cgzzUgV261vBO2jI5R/3DD1J2pM0nI4NhU=
+google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240520151616-dc85e6b867a5/go.mod 
h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
+google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA=
+google.golang.org/grpc v1.64.1/go.mod 
h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0=
 google.golang.org/protobuf v1.34.2 
h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
 google.golang.org/protobuf v1.34.2/go.mod 
h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod 
h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/go-jose/go-jose.v2 v2.6.3 
h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKKs=
-gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod 
h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
 gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY=
 gopkg.in/h2non/gock.v1 v1.1.2/go.mod 
h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0=
 gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/internal/codespaces/rpc/invoker.go 
new/cli-2.54.0/internal/codespaces/rpc/invoker.go
--- old/cli-2.53.0/internal/codespaces/rpc/invoker.go   2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/internal/codespaces/rpc/invoker.go   2024-08-01 
00:19:49.000000000 +0200
@@ -116,9 +116,8 @@
                // Attempt to connect to the port
                opts := []grpc.DialOption{
                        
grpc.WithTransportCredentials(insecure.NewCredentials()),
-                       grpc.WithBlock(),
                }
-               conn, err = grpc.DialContext(connectctx, localAddress, opts...)
+               conn, err = grpc.NewClient(localAddress, opts...)
                ch <- err // nil if we successfully connected
        }()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/api/api.go 
new/cli-2.54.0/pkg/cmd/api/api.go
--- old/cli-2.53.0/pkg/cmd/api/api.go   2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/api/api.go   2024-08-01 00:19:49.000000000 +0200
@@ -150,7 +150,7 @@
                          '{{range .}}{{.title}} ({{.labels | pluck "name" | 
join ", " | color "yellow"}}){{"\n"}}{{end}}'
 
                        # update allowed values of the "environment" custom 
property in a deeply nested array
-                       gh api --PATCH /orgs/{org}/properties/schema \
+                       gh api -X PATCH /orgs/{org}/properties/schema \
                           -F 'properties[][property_name]=environment' \
                           -F 'properties[][default_value]=production' \
                           -F 'properties[][allowed_values][]=staging' \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/trustedroot/trustedroot_test.go 
new/cli-2.54.0/pkg/cmd/attestation/trustedroot/trustedroot_test.go
--- old/cli-2.53.0/pkg/cmd/attestation/trustedroot/trustedroot_test.go  
2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/trustedroot/trustedroot_test.go  
2024-08-01 00:19:49.000000000 +0200
@@ -85,11 +85,6 @@
                TufRootPath: root,
        }
 
-       t.Run("successfully verifies TUF root", func(t *testing.T) {
-               err := getTrustedRoot(tuf.New, opts)
-               require.NoError(t, err)
-       })
-
        t.Run("failed to create TUF root", func(t *testing.T) {
                err := getTrustedRoot(newTUFErrClient, opts)
                require.Error(t, err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/verification/extensions.go 
new/cli-2.54.0/pkg/cmd/attestation/verification/extensions.go
--- old/cli-2.53.0/pkg/cmd/attestation/verification/extensions.go       
1970-01-01 01:00:00.000000000 +0100
+++ new/cli-2.54.0/pkg/cmd/attestation/verification/extensions.go       
2024-08-01 00:19:49.000000000 +0200
@@ -0,0 +1,28 @@
+package verification
+
+import (
+       "fmt"
+       "strings"
+)
+
+func VerifyCertExtensions(results []*AttestationProcessingResult, owner 
string, repo string) error {
+       for _, attestation := range results {
+               // TODO: handle proxima prefix
+               expectedSourceRepositoryOwnerURI := 
fmt.Sprintf("https://github.com/%s";, owner)
+               sourceRepositoryOwnerURI := 
attestation.VerificationResult.Signature.Certificate.Extensions.SourceRepositoryOwnerURI
+               if !strings.EqualFold(expectedSourceRepositoryOwnerURI, 
sourceRepositoryOwnerURI) {
+                       return fmt.Errorf("expected SourceRepositoryOwnerURI to 
be %s, got %s", expectedSourceRepositoryOwnerURI, sourceRepositoryOwnerURI)
+               }
+
+               // if repo is set, check the SourceRepositoryURI field
+               if repo != "" {
+                       // TODO: handle proxima prefix
+                       expectedSourceRepositoryURI := 
fmt.Sprintf("https://github.com/%s";, repo)
+                       sourceRepositoryURI := 
attestation.VerificationResult.Signature.Certificate.Extensions.SourceRepositoryURI
+                       if !strings.EqualFold(expectedSourceRepositoryURI, 
sourceRepositoryURI) {
+                               return fmt.Errorf("expected SourceRepositoryURI 
to be %s, got %s", expectedSourceRepositoryURI, sourceRepositoryURI)
+                       }
+               }
+       }
+       return nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/verification/extensions_test.go 
new/cli-2.54.0/pkg/cmd/attestation/verification/extensions_test.go
--- old/cli-2.53.0/pkg/cmd/attestation/verification/extensions_test.go  
1970-01-01 01:00:00.000000000 +0100
+++ new/cli-2.54.0/pkg/cmd/attestation/verification/extensions_test.go  
2024-08-01 00:19:49.000000000 +0200
@@ -0,0 +1,46 @@
+package verification
+
+import (
+       "testing"
+
+       "github.com/sigstore/sigstore-go/pkg/fulcio/certificate"
+       "github.com/sigstore/sigstore-go/pkg/verify"
+       "github.com/stretchr/testify/require"
+)
+
+func TestVerifyCertExtensions(t *testing.T) {
+       results := []*AttestationProcessingResult{
+               {
+                       VerificationResult: &verify.VerificationResult{
+                               Signature: &verify.SignatureVerificationResult{
+                                       Certificate: &certificate.Summary{
+                                               Extensions: 
certificate.Extensions{
+                                                       
SourceRepositoryOwnerURI: "https://github.com/owner";,
+                                                       SourceRepositoryURI:    
  "https://github.com/owner/repo";,
+                                               },
+                                       },
+                               },
+                       },
+               },
+       }
+
+       t.Run("VerifyCertExtensions with owner and repo", func(t *testing.T) {
+               err := VerifyCertExtensions(results, "owner", "owner/repo")
+               require.NoError(t, err)
+       })
+
+       t.Run("VerifyCertExtensions with owner", func(t *testing.T) {
+               err := VerifyCertExtensions(results, "owner", "")
+               require.NoError(t, err)
+       })
+
+       t.Run("VerifyCertExtensions with wrong owner", func(t *testing.T) {
+               err := VerifyCertExtensions(results, "wrong", "")
+               require.ErrorContains(t, err, "expected 
SourceRepositoryOwnerURI to be https://github.com/wrong, got 
https://github.com/owner";)
+       })
+
+       t.Run("VerifyCertExtensions with wrong repo", func(t *testing.T) {
+               err := VerifyCertExtensions(results, "owner", "wrong")
+               require.ErrorContains(t, err, "expected SourceRepositoryURI to 
be https://github.com/wrong, got https://github.com/owner/repo";)
+       })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/verification/mock_verifier.go 
new/cli-2.54.0/pkg/cmd/attestation/verification/mock_verifier.go
--- old/cli-2.53.0/pkg/cmd/attestation/verification/mock_verifier.go    
2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verification/mock_verifier.go    
2024-08-01 00:19:49.000000000 +0200
@@ -31,7 +31,9 @@
                        Signature: &verify.SignatureVerificationResult{
                                Certificate: &certificate.Summary{
                                        Extensions: certificate.Extensions{
-                                               BuildSignerURI: 
"https://github.com/github/example/.github/workflows/release.yml@refs/heads/main";,
+                                               BuildSignerURI:           
"https://github.com/github/example/.github/workflows/release.yml@refs/heads/main";,
+                                               SourceRepositoryOwnerURI: 
"https://github.com/sigstore";,
+                                               SourceRepositoryURI:      
"https://github.com/sigstore/sigstore-js";,
                                        },
                                },
                        },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/verification/sigstore.go 
new/cli-2.54.0/pkg/cmd/attestation/verification/sigstore.go
--- old/cli-2.53.0/pkg/cmd/attestation/verification/sigstore.go 2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verification/sigstore.go 2024-08-01 
00:19:49.000000000 +0200
@@ -60,8 +60,8 @@
        if err != nil {
                return nil, "", fmt.Errorf("failed to get bundle verification 
content: %v", err)
        }
-       leafCert, ok := verifyContent.HasCertificate()
-       if !ok {
+       leafCert := verifyContent.GetCertificate()
+       if leafCert == nil {
                return nil, "", fmt.Errorf("leaf cert not found")
        }
        if len(leafCert.Issuer.Organization) != 1 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/verify/options_test.go 
new/cli-2.54.0/pkg/cmd/attestation/verify/options_test.go
--- old/cli-2.53.0/pkg/cmd/attestation/verify/options_test.go   2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verify/options_test.go   2024-08-01 
00:19:49.000000000 +0200
@@ -70,7 +70,7 @@
                opts.SetPolicyFlags()
                require.Equal(t, "sigstore", opts.Owner)
                require.Equal(t, "sigstore/sigstore-js", opts.Repo)
-               require.Equal(t, "^https://github.com/sigstore/sigstore-js/";, 
opts.SANRegex)
+               require.Equal(t, 
"(?i)^https://github.com/sigstore/sigstore-js/";, opts.SANRegex)
        })
 
        t.Run("does not set SANRegex when SANRegex and Repo are provided", 
func(t *testing.T) {
@@ -99,7 +99,7 @@
 
                opts.SetPolicyFlags()
                require.Equal(t, "sigstore", opts.Owner)
-               require.Equal(t, "^https://github.com/sigstore/";, opts.SANRegex)
+               require.Equal(t, "(?i)^https://github.com/sigstore/";, 
opts.SANRegex)
        })
 
        t.Run("does not set SANRegex when SANRegex and Owner are provided", 
func(t *testing.T) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/attestation/verify/policy.go 
new/cli-2.54.0/pkg/cmd/attestation/verify/policy.go
--- old/cli-2.53.0/pkg/cmd/attestation/verify/policy.go 2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verify/policy.go 2024-08-01 
00:19:49.000000000 +0200
@@ -21,50 +21,44 @@
 )
 
 func expandToGitHubURL(ownerOrRepo string) string {
-       return fmt.Sprintf("^https://github.com/%s/";, ownerOrRepo)
+       // TODO: handle proxima prefix
+       return fmt.Sprintf("(?i)^https://github.com/%s/";, ownerOrRepo)
 }
 
 func buildSANMatcher(opts *Options) (verify.SubjectAlternativeNameMatcher, 
error) {
        if opts.SignerRepo != "" {
                signedRepoRegex := expandToGitHubURL(opts.SignerRepo)
-               return verify.NewSANMatcher("", "", signedRepoRegex)
+               return verify.NewSANMatcher("", signedRepoRegex)
        } else if opts.SignerWorkflow != "" {
                validatedWorkflowRegex, err := validateSignerWorkflow(opts)
                if err != nil {
                        return verify.SubjectAlternativeNameMatcher{}, err
                }
 
-               return verify.NewSANMatcher("", "", validatedWorkflowRegex)
+               return verify.NewSANMatcher("", validatedWorkflowRegex)
        } else if opts.SAN != "" || opts.SANRegex != "" {
-               return verify.NewSANMatcher(opts.SAN, "", opts.SANRegex)
+               return verify.NewSANMatcher(opts.SAN, opts.SANRegex)
        }
 
        return verify.SubjectAlternativeNameMatcher{}, nil
 }
 
-func buildCertExtensions(opts *Options, runnerEnv string) 
certificate.Extensions {
-       extensions := certificate.Extensions{
-               Issuer:                   opts.OIDCIssuer,
-               SourceRepositoryOwnerURI: fmt.Sprintf("https://github.com/%s";, 
opts.Owner),
-               RunnerEnvironment:        runnerEnv,
-       }
-
-       // if opts.Repo is set, set the SourceRepositoryURI field before 
returning the extensions
-       if opts.Repo != "" {
-               extensions.SourceRepositoryURI = 
fmt.Sprintf("https://github.com/%s";, opts.Repo)
-       }
-       return extensions
-}
-
 func buildCertificateIdentityOption(opts *Options, runnerEnv string) 
(verify.PolicyOption, error) {
        sanMatcher, err := buildSANMatcher(opts)
        if err != nil {
                return nil, err
        }
 
-       extensions := buildCertExtensions(opts, runnerEnv)
+       issuerMatcher, err := verify.NewIssuerMatcher(opts.OIDCIssuer, "")
+       if err != nil {
+               return nil, err
+       }
+
+       extensions := certificate.Extensions{
+               RunnerEnvironment: runnerEnv,
+       }
 
-       certId, err := verify.NewCertificateIdentity(sanMatcher, extensions)
+       certId, err := verify.NewCertificateIdentity(sanMatcher, issuerMatcher, 
extensions)
        if err != nil {
                return nil, err
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/attestation/verify/verify.go 
new/cli-2.54.0/pkg/cmd/attestation/verify/verify.go
--- old/cli-2.53.0/pkg/cmd/attestation/verify/verify.go 2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verify/verify.go 2024-08-01 
00:19:49.000000000 +0200
@@ -235,6 +235,12 @@
                return sigstoreRes.Error
        }
 
+       // Verify extensions
+       if err := verification.VerifyCertExtensions(sigstoreRes.VerifyResults, 
opts.Owner, opts.Repo); err != nil {
+               opts.Logger.Println(opts.Logger.ColorScheme.Red("✗ 
Verification failed"))
+               return err
+       }
+
        opts.Logger.Println(opts.Logger.ColorScheme.Green("✓ Verification 
succeeded!\n"))
 
        // If an exporter is provided with the --json flag, write the results 
to the terminal in JSON format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cli-2.53.0/pkg/cmd/attestation/verify/verify_integration_test.go 
new/cli-2.54.0/pkg/cmd/attestation/verify/verify_integration_test.go
--- old/cli-2.53.0/pkg/cmd/attestation/verify/verify_integration_test.go        
2024-07-17 20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verify/verify_integration_test.go        
2024-08-01 00:19:49.000000000 +0200
@@ -60,7 +60,7 @@
 
                err := runVerify(&opts)
                require.Error(t, err)
-               require.ErrorContains(t, err, "verifying with issuer 
\"sigstore.dev\": failed to verify certificate identity: no matching 
certificate identity found")
+               require.ErrorContains(t, err, "expected SourceRepositoryURI to 
be https://github.com/sigstore/fakerepo, got 
https://github.com/sigstore/sigstore-js";)
        })
 
        t.Run("with invalid owner", func(t *testing.T) {
@@ -69,7 +69,7 @@
 
                err := runVerify(&opts)
                require.Error(t, err)
-               require.ErrorContains(t, err, "verifying with issuer 
\"sigstore.dev\": failed to verify certificate identity: no matching 
certificate identity found")
+               require.ErrorContains(t, err, "expected 
SourceRepositoryOwnerURI to be https://github.com/fakeowner, got 
https://github.com/sigstore";)
        })
 
        t.Run("with invalid owner and invalid repo", func(t *testing.T) {
@@ -78,7 +78,7 @@
 
                err := runVerify(&opts)
                require.Error(t, err)
-               require.ErrorContains(t, err, "verifying with issuer 
\"sigstore.dev\": failed to verify certificate identity: no matching 
certificate identity found")
+               require.ErrorContains(t, err, "expected SourceRepositoryURI to 
be https://github.com/fakeowner/fakerepo, got 
https://github.com/sigstore/sigstore-js";)
        })
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/attestation/verify/verify_test.go 
new/cli-2.54.0/pkg/cmd/attestation/verify/verify_test.go
--- old/cli-2.53.0/pkg/cmd/attestation/verify/verify_test.go    2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/attestation/verify/verify_test.go    2024-08-01 
00:19:49.000000000 +0200
@@ -76,7 +76,7 @@
                                Limit:            30,
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: false,
@@ -91,7 +91,7 @@
                                Limit:            30,
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: false,
@@ -105,7 +105,7 @@
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
                                Limit:            30,
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: true,
@@ -133,7 +133,7 @@
                                Limit:            30,
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: false,
@@ -147,7 +147,7 @@
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
                                Limit:            101,
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: false,
@@ -161,7 +161,7 @@
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
                                Limit:            0,
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: true,
@@ -176,7 +176,7 @@
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
                                SAN:              
"https://github.com/sigstore/";,
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsErr: true,
@@ -191,7 +191,7 @@
                                Limit:            30,
                                OIDCIssuer:       GitHubOIDCIssuer,
                                Owner:            "sigstore",
-                               SANRegex:         
"^https://github.com/sigstore/";,
+                               SANRegex:         
"(?i)^https://github.com/sigstore/";,
                                SigstoreVerifier: 
verification.NewMockSigstoreVerifier(t),
                        },
                        wantsExporter: true,
@@ -340,14 +340,32 @@
                require.Nil(t, runVerify(&opts))
        })
 
+       t.Run("with owner which not matches SourceRepositoryOwnerURI", func(t 
*testing.T) {
+               opts := publicGoodOpts
+               opts.BundlePath = ""
+               opts.Owner = "owner"
+
+               err := runVerify(&opts)
+               require.ErrorContains(t, err, "expected 
SourceRepositoryOwnerURI to be https://github.com/owner, got 
https://github.com/sigstore";)
+       })
+
        t.Run("with repo", func(t *testing.T) {
                opts := publicGoodOpts
                opts.BundlePath = ""
-               opts.Repo = "github/example"
+               opts.Repo = "sigstore/sigstore-js"
 
                require.Nil(t, runVerify(&opts))
        })
 
+       t.Run("with repo which not matches SourceRepositoryURI", func(t 
*testing.T) {
+               opts := publicGoodOpts
+               opts.BundlePath = ""
+               opts.Repo = "wrong/example"
+
+               err := runVerify(&opts)
+               require.ErrorContains(t, err, "expected SourceRepositoryURI to 
be https://github.com/wrong/example, got 
https://github.com/sigstore/sigstore-js";)
+       })
+
        t.Run("with invalid repo", func(t *testing.T) {
                opts := publicGoodOpts
                opts.BundlePath = ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/auth/status/status.go 
new/cli-2.54.0/pkg/cmd/auth/status/status.go
--- old/cli-2.53.0/pkg/cmd/auth/status/status.go        2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/auth/status/status.go        2024-08-01 
00:19:49.000000000 +0200
@@ -145,8 +145,11 @@
                Long: heredoc.Docf(`
                        Display active account and authentication state on each 
known GitHub host.
 
-                       For each host, the authentication state of each known 
account is tested and any issues are included in
-                       the output. Each host section will indicate the active 
account, which will be used when targeting that host.
+                       For each host, the authentication state of each known 
account is tested and any issues are included in the output.
+                       Each host section will indicate the active account, 
which will be used when targeting that host.
+                       If an account on any host (or only the one given via 
%[1]s--hostname%[1]s) has authentication issues,
+                       the command will exit with 1 and output to stderr.
+
                        To change the active account for a host, see %[1]sgh 
auth switch%[1]s.
                `, "`"),
                RunE: func(cmd *cobra.Command, args []string) error {
@@ -158,7 +161,7 @@
                },
        }
 
-       cmd.Flags().StringVarP(&opts.Hostname, "hostname", "h", "", "Check a 
specific hostname's auth status")
+       cmd.Flags().StringVarP(&opts.Hostname, "hostname", "h", "", "Check only 
a specific hostname's auth status")
        cmd.Flags().BoolVarP(&opts.ShowToken, "show-token", "t", false, 
"Display the auth token")
 
        return cmd
@@ -217,6 +220,10 @@
                })
                statuses[hostname] = append(statuses[hostname], entry)
 
+               if err == nil && !isValidEntry(entry) {
+                       err = cmdutil.SilentError
+               }
+
                users := authCfg.UsersForHost(hostname)
                for _, username := range users {
                        if username == activeUser {
@@ -233,6 +240,10 @@
                                username:    username,
                        })
                        statuses[hostname] = append(statuses[hostname], entry)
+
+                       if err == nil && !isValidEntry(entry) {
+                               err = cmdutil.SilentError
+                       }
                }
        }
 
@@ -243,15 +254,20 @@
                        continue
                }
 
+               stream := stdout
+               if err != nil {
+                       stream = stderr
+               }
+
                if prevEntry {
-                       fmt.Fprint(stdout, "\n")
+                       fmt.Fprint(stream, "\n")
                }
                prevEntry = true
-               fmt.Fprintf(stdout, "%s\n", cs.Bold(hostname))
-               fmt.Fprintf(stdout, "%s", strings.Join(entries.Strings(cs), 
"\n"))
+               fmt.Fprintf(stream, "%s\n", cs.Bold(hostname))
+               fmt.Fprintf(stream, "%s", strings.Join(entries.Strings(cs), 
"\n"))
        }
 
-       return nil
+       return err
 }
 
 func displayToken(token string, printRaw bool) string {
@@ -356,3 +372,8 @@
 func authTokenWriteable(src string) bool {
        return !strings.HasSuffix(src, "_TOKEN")
 }
+
+func isValidEntry(entry Entry) bool {
+       _, ok := entry.(validEntry)
+       return ok
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/auth/status/status_test.go 
new/cli-2.54.0/pkg/cmd/auth/status/status_test.go
--- old/cli-2.53.0/pkg/cmd/auth/status/status_test.go   2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/auth/status/status_test.go   2024-08-01 
00:19:49.000000000 +0200
@@ -100,7 +100,8 @@
                                        return nil, context.DeadlineExceeded
                                })
                        },
-                       wantOut: heredoc.Doc(`
+                       wantErr: cmdutil.SilentError,
+                       wantErrOut: heredoc.Doc(`
                                github.com
                                  X Timeout trying to log in to github.com 
account monalisa (GH_CONFIG_DIR/hosts.yml)
                                  - Active account: true
@@ -159,8 +160,54 @@
                                // mock for HeaderHasMinimumScopes api requests 
to a non-github.com host
                                reg.Register(httpmock.REST("GET", "api/v3/"), 
httpmock.StatusStringResponse(400, "no bueno"))
                        },
+                       wantErr: cmdutil.SilentError,
+                       wantErrOut: heredoc.Doc(`
+                               ghe.io
+                                 X Failed to log in to ghe.io account 
monalisa-ghe (GH_CONFIG_DIR/hosts.yml)
+                                 - Active account: true
+                                 - The token in GH_CONFIG_DIR/hosts.yml is 
invalid.
+                                 - To re-authenticate, run: gh auth login -h 
ghe.io
+                                 - To forget about this account, run: gh auth 
logout -h ghe.io -u monalisa-ghe
+                       `),
+               },
+               {
+                       name: "bad token on other host",
+                       opts: StatusOptions{
+                               Hostname: "ghe.io",
+                       },
+                       cfgStubs: func(t *testing.T, c gh.Config) {
+                               login(t, c, "github.com", "monalisa", 
"gho_abc123", "https")
+                               login(t, c, "ghe.io", "monalisa-ghe", 
"gho_abc123", "https")
+                       },
+                       httpStubs: func(reg *httpmock.Registry) {
+                               // mocks for HeaderHasMinimumScopes api 
requests to a non-github.com host
+                               reg.Register(httpmock.REST("GET", "api/v3/"), 
httpmock.WithHeader(httpmock.ScopesResponder("repo,read:org"), 
"X-Oauth-Scopes", "repo, read:org"))
+                       },
                        wantOut: heredoc.Doc(`
                                ghe.io
+                                 ✓ Logged in to ghe.io account monalisa-ghe 
(GH_CONFIG_DIR/hosts.yml)
+                                 - Active account: true
+                                 - Git operations protocol: https
+                                 - Token: gho_******
+                                 - Token scopes: 'repo', 'read:org'
+                       `),
+               },
+               {
+                       name: "bad token on selected host",
+                       opts: StatusOptions{
+                               Hostname: "ghe.io",
+                       },
+                       cfgStubs: func(t *testing.T, c gh.Config) {
+                               login(t, c, "github.com", "monalisa", 
"gho_abc123", "https")
+                               login(t, c, "ghe.io", "monalisa-ghe", 
"gho_abc123", "https")
+                       },
+                       httpStubs: func(reg *httpmock.Registry) {
+                               // mocks for HeaderHasMinimumScopes api 
requests to a non-github.com host
+                               reg.Register(httpmock.REST("GET", "api/v3/"), 
httpmock.StatusStringResponse(400, "no bueno"))
+                       },
+                       wantErr: cmdutil.SilentError,
+                       wantErrOut: heredoc.Doc(`
+                               ghe.io
                                  X Failed to log in to ghe.io account 
monalisa-ghe (GH_CONFIG_DIR/hosts.yml)
                                  - Active account: true
                                  - The token in GH_CONFIG_DIR/hosts.yml is 
invalid.
@@ -355,7 +402,8 @@
                                        httpmock.GraphQL(`query UserCurrent\b`),
                                        
httpmock.StringResponse(`{"data":{"viewer":{"login":"monalisa-ghe-2"}}}`))
                        },
-                       wantOut: heredoc.Doc(`
+                       wantErr: cmdutil.SilentError,
+                       wantErrOut: heredoc.Doc(`
                                github.com
                                  ✓ Logged in to github.com account 
monalisa-2 (GH_CONFIG_DIR/hosts.yml)
                                  - Active account: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/issue/create/create.go 
new/cli-2.54.0/pkg/cmd/issue/create/create.go
--- old/cli-2.53.0/pkg/cmd/issue/create/create.go       2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/issue/create/create.go       2024-08-01 
00:19:49.000000000 +0200
@@ -72,6 +72,7 @@
                        $ gh issue create --assignee monalisa,hubot
                        $ gh issue create --assignee "@me"
                        $ gh issue create --project "Roadmap"
+                       $ gh issue create --template "bug_report.md"
                `),
                Args:    cmdutil.NoArgsQuoteReminder,
                Aliases: []string{"new"},
@@ -139,7 +140,7 @@
        cmd.Flags().StringSliceVarP(&opts.Projects, "project", "p", nil, "Add 
the issue to projects by `name`")
        cmd.Flags().StringVarP(&opts.Milestone, "milestone", "m", "", "Add the 
issue to a milestone by `name`")
        cmd.Flags().StringVar(&opts.RecoverFile, "recover", "", "Recover input 
from a failed run of create")
-       cmd.Flags().StringVarP(&opts.Template, "template", "T", "", "Template 
`name` to use as starting body text")
+       cmd.Flags().StringVarP(&opts.Template, "template", "T", "", "Template 
`file` to use as starting body text")
 
        return cmd
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/issue/edit/edit.go 
new/cli-2.54.0/pkg/cmd/issue/edit/edit.go
--- old/cli-2.53.0/pkg/cmd/issue/edit/edit.go   2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/pkg/cmd/issue/edit/edit.go   2024-08-01 00:19:49.000000000 
+0200
@@ -46,6 +46,7 @@
        }
 
        var bodyFile string
+       var removeMilestone bool
 
        cmd := &cobra.Command{
                Use:   "edit {<numbers> | <urls>}",
@@ -62,6 +63,7 @@
                        $ gh issue edit 23 --add-assignee "@me" 
--remove-assignee monalisa,hubot
                        $ gh issue edit 23 --add-project "Roadmap" 
--remove-project v1,v2
                        $ gh issue edit 23 --milestone "Version 1"
+                       $ gh issue edit 23 --remove-milestone
                        $ gh issue edit 23 --body-file body.txt
                        $ gh issue edit 23 34 --add-label "help wanted"
                `),
@@ -95,6 +97,14 @@
                                }
                        }
 
+                       if err := cmdutil.MutuallyExclusive(
+                               "specify only one of `--milestone` or 
`--remove-milestone`",
+                               flags.Changed("milestone"),
+                               removeMilestone,
+                       ); err != nil {
+                               return err
+                       }
+
                        if flags.Changed("title") {
                                opts.Editable.Title.Edited = true
                        }
@@ -107,8 +117,13 @@
                        if flags.Changed("add-project") || 
flags.Changed("remove-project") {
                                opts.Editable.Projects.Edited = true
                        }
-                       if flags.Changed("milestone") {
+                       if flags.Changed("milestone") || removeMilestone {
                                opts.Editable.Milestone.Edited = true
+
+                               // Note that when `--remove-milestone` is 
provided, the value of
+                               // `opts.Editable.Milestone.Value` will 
automatically be empty,
+                               // which results in milestone association 
removal. For reference,
+                               // see the `Editable.MilestoneId` method.
                        }
 
                        if !opts.Editable.Dirty() {
@@ -141,6 +156,7 @@
        cmd.Flags().StringSliceVar(&opts.Editable.Projects.Add, "add-project", 
nil, "Add the issue to projects by `name`")
        cmd.Flags().StringSliceVar(&opts.Editable.Projects.Remove, 
"remove-project", nil, "Remove the issue from projects by `name`")
        cmd.Flags().StringVarP(&opts.Editable.Milestone.Value, "milestone", 
"m", "", "Edit the milestone the issue belongs to by `name`")
+       cmd.Flags().BoolVar(&removeMilestone, "remove-milestone", false, 
"Remove the milestone association from the issue")
 
        return cmd
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/issue/edit/edit_test.go 
new/cli-2.54.0/pkg/cmd/issue/edit/edit_test.go
--- old/cli-2.53.0/pkg/cmd/issue/edit/edit_test.go      2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/issue/edit/edit_test.go      2024-08-01 
00:19:49.000000000 +0200
@@ -105,6 +105,11 @@
                        wantsErr: false,
                },
                {
+                       name:     "both body and body-file flags",
+                       input:    "23 --body foo --body-file bar",
+                       wantsErr: true,
+               },
+               {
                        name:  "add-assignee flag",
                        input: "23 --add-assignee monalisa,hubot",
                        output: EditOptions{
@@ -207,13 +212,13 @@
                        wantsErr: false,
                },
                {
-                       name:  "add label to multiple issues",
-                       input: "23 34 --add-label bug",
+                       name:  "remove-milestone flag",
+                       input: "23 --remove-milestone",
                        output: EditOptions{
-                               SelectorArgs: []string{"23", "34"},
+                               SelectorArgs: []string{"23"},
                                Editable: prShared.Editable{
-                                       Labels: prShared.EditableSlice{
-                                               Add:    []string{"bug"},
+                                       Milestone: prShared.EditableString{
+                                               Value:  "",
                                                Edited: true,
                                        },
                                },
@@ -221,8 +226,13 @@
                        wantsErr: false,
                },
                {
-                       name:  "interactive multiple issues",
-                       input: "23 34",
+                       name:     "both milestone and remove-milestone flags",
+                       input:    "23 --milestone foo --remove-milestone",
+                       wantsErr: true,
+               },
+               {
+                       name:  "add label to multiple issues",
+                       input: "23 34 --add-label bug",
                        output: EditOptions{
                                SelectorArgs: []string{"23", "34"},
                                Editable: prShared.Editable{
@@ -232,6 +242,11 @@
                                        },
                                },
                        },
+                       wantsErr: false,
+               },
+               {
+                       name:     "interactive multiple issues",
+                       input:    "23 34",
                        wantsErr: true,
                },
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/pr/create/create.go 
new/cli-2.54.0/pkg/cmd/pr/create/create.go
--- old/cli-2.53.0/pkg/cmd/pr/create/create.go  2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/pkg/cmd/pr/create/create.go  2024-08-01 00:19:49.000000000 
+0200
@@ -131,6 +131,7 @@
                        $ gh pr create --reviewer monalisa,hubot  --reviewer 
myorg/team-name
                        $ gh pr create --project "Roadmap"
                        $ gh pr create --base develop --head monalisa:feature
+                       $ gh pr create --template "pull_request_template.md"
                `),
                Args:    cmdutil.NoArgsQuoteReminder,
                Aliases: []string{"new"},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/pr/edit/edit.go 
new/cli-2.54.0/pkg/cmd/pr/edit/edit.go
--- old/cli-2.53.0/pkg/cmd/pr/edit/edit.go      2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/pkg/cmd/pr/edit/edit.go      2024-08-01 00:19:49.000000000 
+0200
@@ -43,6 +43,7 @@
        }
 
        var bodyFile string
+       var removeMilestone bool
 
        cmd := &cobra.Command{
                Use:   "edit [<number> | <url> | <branch>]",
@@ -63,6 +64,7 @@
                        $ gh pr edit 23 --add-assignee "@me" --remove-assignee 
monalisa,hubot
                        $ gh pr edit 23 --add-project "Roadmap" 
--remove-project v1,v2
                        $ gh pr edit 23 --milestone "Version 1"
+                       $ gh pr edit 23 --remove-milestone
                `),
                Args: cobra.MaximumNArgs(1),
                RunE: func(cmd *cobra.Command, args []string) error {
@@ -95,6 +97,14 @@
                                }
                        }
 
+                       if err := cmdutil.MutuallyExclusive(
+                               "specify only one of `--milestone` or 
`--remove-milestone`",
+                               flags.Changed("milestone"),
+                               removeMilestone,
+                       ); err != nil {
+                               return err
+                       }
+
                        if flags.Changed("title") {
                                opts.Editable.Title.Edited = true
                        }
@@ -116,8 +126,13 @@
                        if flags.Changed("add-project") || 
flags.Changed("remove-project") {
                                opts.Editable.Projects.Edited = true
                        }
-                       if flags.Changed("milestone") {
+                       if flags.Changed("milestone") || removeMilestone {
                                opts.Editable.Milestone.Edited = true
+
+                               // Note that when `--remove-milestone` is 
provided, the value of
+                               // `opts.Editable.Milestone.Value` will 
automatically be empty,
+                               // which results in milestone association 
removal. For reference,
+                               // see the `Editable.MilestoneId` method.
                        }
 
                        if !opts.Editable.Dirty() {
@@ -149,6 +164,7 @@
        cmd.Flags().StringSliceVar(&opts.Editable.Projects.Add, "add-project", 
nil, "Add the pull request to projects by `name`")
        cmd.Flags().StringSliceVar(&opts.Editable.Projects.Remove, 
"remove-project", nil, "Remove the pull request from projects by `name`")
        cmd.Flags().StringVarP(&opts.Editable.Milestone.Value, "milestone", 
"m", "", "Edit the milestone the pull request belongs to by `name`")
+       cmd.Flags().BoolVar(&removeMilestone, "remove-milestone", false, 
"Remove the milestone association from the pull request")
 
        _ = cmdutil.RegisterBranchCompletionFlags(f.GitClient, cmd, "base")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/pr/edit/edit_test.go 
new/cli-2.54.0/pkg/cmd/pr/edit/edit_test.go
--- old/cli-2.53.0/pkg/cmd/pr/edit/edit_test.go 2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/pkg/cmd/pr/edit/edit_test.go 2024-08-01 00:19:49.000000000 
+0200
@@ -113,6 +113,11 @@
                        wantsErr: false,
                },
                {
+                       name:     "both body and body-file flags",
+                       input:    "23 --body foo --body-file bar",
+                       wantsErr: true,
+               },
+               {
                        name:  "base flag",
                        input: "23 --base base-branch-name",
                        output: EditOptions{
@@ -256,6 +261,25 @@
                        },
                        wantsErr: false,
                },
+               {
+                       name:  "remove-milestone flag",
+                       input: "23 --remove-milestone",
+                       output: EditOptions{
+                               SelectorArg: "23",
+                               Editable: shared.Editable{
+                                       Milestone: shared.EditableString{
+                                               Value:  "",
+                                               Edited: true,
+                                       },
+                               },
+                       },
+                       wantsErr: false,
+               },
+               {
+                       name:     "both milestone and remove-milestone flags",
+                       input:    "23 --milestone foo --remove-milestone",
+                       wantsErr: true,
+               },
        }
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/pr/view/view_test.go 
new/cli-2.54.0/pkg/cmd/pr/view/view_test.go
--- old/cli-2.53.0/pkg/cmd/pr/view/view_test.go 2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/pkg/cmd/pr/view/view_test.go 2024-08-01 00:19:49.000000000 
+0200
@@ -41,6 +41,7 @@
                "createdAt",
                "deletions",
                "files",
+               "fullDatabaseId",
                "headRefName",
                "headRefOid",
                "headRepository",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/release/shared/fetch.go 
new/cli-2.54.0/pkg/cmd/release/shared/fetch.go
--- old/cli-2.53.0/pkg/cmd/release/shared/fetch.go      2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/release/shared/fetch.go      2024-08-01 
00:19:49.000000000 +0200
@@ -21,22 +21,23 @@
 )
 
 var ReleaseFields = []string{
-       "url",
        "apiUrl",
-       "uploadUrl",
-       "tarballUrl",
-       "zipballUrl",
-       "id",
-       "tagName",
-       "name",
+       "author",
+       "assets",
        "body",
+       "createdAt",
+       "databaseId",
+       "id",
        "isDraft",
        "isPrerelease",
-       "createdAt",
+       "name",
        "publishedAt",
+       "tagName",
+       "tarballUrl",
        "targetCommitish",
-       "author",
-       "assets",
+       "uploadUrl",
+       "url",
+       "zipballUrl",
 }
 
 type Release struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/release/view/view_test.go 
new/cli-2.54.0/pkg/cmd/release/view/view_test.go
--- old/cli-2.53.0/pkg/cmd/release/view/view_test.go    2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/release/view/view_test.go    2024-08-01 
00:19:49.000000000 +0200
@@ -14,11 +14,34 @@
        "github.com/cli/cli/v2/pkg/cmdutil"
        "github.com/cli/cli/v2/pkg/httpmock"
        "github.com/cli/cli/v2/pkg/iostreams"
+       "github.com/cli/cli/v2/pkg/jsonfieldstest"
        "github.com/google/shlex"
        "github.com/stretchr/testify/assert"
        "github.com/stretchr/testify/require"
 )
 
+func TestJSONFields(t *testing.T) {
+       jsonfieldstest.ExpectCommandToSupportJSONFields(t, NewCmdView, []string{
+               "apiUrl",
+               "author",
+               "assets",
+               "body",
+               "createdAt",
+               "databaseId",
+               "id",
+               "isDraft",
+               "isPrerelease",
+               "name",
+               "publishedAt",
+               "tagName",
+               "tarballUrl",
+               "targetCommitish",
+               "uploadUrl",
+               "url",
+               "zipballUrl",
+       })
+}
+
 func Test_NewCmdView(t *testing.T) {
        tests := []struct {
                name    string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/repo/create/create.go 
new/cli-2.54.0/pkg/cmd/repo/create/create.go
--- old/cli-2.53.0/pkg/cmd/repo/create/create.go        2024-07-17 
20:03:29.000000000 +0200
+++ new/cli-2.54.0/pkg/cmd/repo/create/create.go        2024-08-01 
00:19:49.000000000 +0200
@@ -102,7 +102,7 @@
                        # create a new remote repository and clone it locally
                        gh repo create my-project --public --clone
 
-                        # create a new remote repository in a different 
organization
+                       # create a new remote repository in a different 
organization
                        gh repo create my-org/my-project --public
 
                        # create a remote repository from the current directory
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.53.0/pkg/cmd/root/help_topic.go 
new/cli-2.54.0/pkg/cmd/root/help_topic.go
--- old/cli-2.53.0/pkg/cmd/root/help_topic.go   2024-07-17 20:03:29.000000000 
+0200
+++ new/cli-2.54.0/pkg/cmd/root/help_topic.go   2024-08-01 00:19:49.000000000 
+0200
@@ -266,7 +266,7 @@
 
                        - If a command is running but gets cancelled, the exit 
code will be 2
 
-                       - If a command encounters an authentication issue, the 
exit code will be 4
+                       - If a command requires authentication, the exit code 
will be 4
 
                        NOTE: It is possible that a particular command may have 
more exit codes, so it is a good
                        practice to check documentation for the command if you 
are relying on exit codes to

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/gh/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.gh.new.7232/vendor.tar.gz differ: char 5, line 1

Reply via email to