Skip to content

Commit 827f6c3

Browse files
authored
Merge pull request #1249 from fluxcd/upgrade-go-git-providers
Upgrade go-git-providers and go-github
2 parents 023a357 + be6d462 commit 827f6c3

6 files changed

Lines changed: 139 additions & 49 deletions

File tree

auth/githubapp/client.go

Lines changed: 103 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
"time"
3131

3232
"github.com/golang-jwt/jwt/v4"
33-
"github.com/google/go-github/v82/github"
33+
"github.com/google/go-github/v87/github"
3434
"golang.org/x/net/http/httpproxy"
3535

3636
"github.com/fluxcd/pkg/cache"
@@ -236,20 +236,9 @@ func (p *Client) createInstallationToken(ctx context.Context) (*AppToken, error)
236236
return nil, err
237237
}
238238

239-
// Create a GitHub client authenticated with the JWT
240-
ghClient := github.NewClient(p.httpClient).WithAuthToken(jwtToken)
241-
242-
// Set custom base URL for GitHub Enterprise
243-
if p.apiURL != "" {
244-
apiURL := p.apiURL
245-
if !strings.HasSuffix(apiURL, "/") {
246-
apiURL += "/"
247-
}
248-
baseURL, err := url.Parse(apiURL)
249-
if err != nil {
250-
return nil, fmt.Errorf("invalid API URL: %w", err)
251-
}
252-
ghClient.BaseURL = baseURL
239+
ghClient, err := p.newGitHubClient(jwtToken)
240+
if err != nil {
241+
return nil, err
253242
}
254243

255244
// Reflect the app slug in the token if enabled.
@@ -279,6 +268,105 @@ func (p *Client) createInstallationToken(ctx context.Context) (*AppToken, error)
279268
}, nil
280269
}
281270

271+
func (p *Client) newGitHubClient(jwtToken string) (*github.Client, error) {
272+
httpClient := p.httpClient
273+
options := []github.ClientOptionsFunc{
274+
github.WithAuthToken(jwtToken),
275+
}
276+
277+
if p.apiURL != "" {
278+
apiURL, err := parseAPIURL(p.apiURL)
279+
if err != nil {
280+
return nil, fmt.Errorf("invalid API URL: %w", err)
281+
}
282+
283+
baseURL := githubEnterpriseBaseURL(apiURL)
284+
if baseURL.Path != apiURL.Path {
285+
httpClient = clientWithBasePathRewrite(p.httpClient, baseURL.Path, apiURL.Path)
286+
}
287+
288+
uploadURL := githubEnterpriseUploadURL(apiURL)
289+
options = append(options, github.WithEnterpriseURLs(baseURL.String(), uploadURL.String()))
290+
}
291+
292+
options = append([]github.ClientOptionsFunc{github.WithHTTPClient(httpClient)}, options...)
293+
return github.NewClient(options...)
294+
}
295+
296+
func parseAPIURL(rawURL string) (*url.URL, error) {
297+
if !strings.HasSuffix(rawURL, "/") {
298+
rawURL += "/"
299+
}
300+
return url.Parse(rawURL)
301+
}
302+
303+
func githubEnterpriseBaseURL(apiURL *url.URL) *url.URL {
304+
baseURL := *apiURL
305+
baseURL.RawPath = ""
306+
if isGitHubAPIHost(baseURL.Host) || strings.HasSuffix(baseURL.Path, "/api/v3/") {
307+
return &baseURL
308+
}
309+
baseURL.Path = strings.TrimSuffix(baseURL.Path, "/") + "/api/v3/"
310+
return &baseURL
311+
}
312+
313+
func githubEnterpriseUploadURL(apiURL *url.URL) *url.URL {
314+
uploadURL := *apiURL
315+
uploadURL.RawPath = ""
316+
if isGitHubUploadHost(uploadURL.Host) {
317+
return &uploadURL
318+
}
319+
if strings.HasSuffix(uploadURL.Path, "/api/v3/") {
320+
uploadURL.Path = strings.TrimSuffix(uploadURL.Path, "api/v3/") + "api/uploads/"
321+
return &uploadURL
322+
}
323+
uploadURL.Path = strings.TrimSuffix(uploadURL.Path, "/") + "/api/uploads/"
324+
return &uploadURL
325+
}
326+
327+
func isGitHubAPIHost(host string) bool {
328+
return strings.HasPrefix(host, "api.") || strings.Contains(host, ".api.")
329+
}
330+
331+
func isGitHubUploadHost(host string) bool {
332+
return isGitHubAPIHost(host) || strings.HasPrefix(host, "uploads.")
333+
}
334+
335+
func clientWithBasePathRewrite(client *http.Client, fromPath, toPath string) *http.Client {
336+
clientCopy := *client
337+
clientCopy.Transport = &basePathRewriteTransport{
338+
base: client.Transport,
339+
fromPath: fromPath,
340+
toPath: toPath,
341+
}
342+
return &clientCopy
343+
}
344+
345+
// basePathRewriteTransport preserves exact custom API base URLs when go-github
346+
// requires an enterprise-style /api/v3/ base URL.
347+
type basePathRewriteTransport struct {
348+
base http.RoundTripper
349+
fromPath string
350+
toPath string
351+
}
352+
353+
func (t *basePathRewriteTransport) RoundTrip(req *http.Request) (*http.Response, error) {
354+
transport := t.base
355+
if transport == nil {
356+
transport = http.DefaultTransport
357+
}
358+
if !strings.HasPrefix(req.URL.Path, t.fromPath) {
359+
return transport.RoundTrip(req)
360+
}
361+
362+
request := req.Clone(req.Context())
363+
u := *req.URL
364+
u.Path = t.toPath + strings.TrimPrefix(req.URL.Path, t.fromPath)
365+
u.RawPath = ""
366+
request.URL = &u
367+
return transport.RoundTrip(request)
368+
}
369+
282370
// getInstallationID gets the installation ID for creating installation tokens.
283371
// If an ID is already set on the client, it is returned directly. Otherwise,
284372
// the installation ID is looked up using the installation owner.

auth/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ require (
3030
github.com/golang-jwt/jwt/v4 v4.5.2
3131
github.com/golang-jwt/jwt/v5 v5.3.1
3232
github.com/google/go-containerregistry v0.21.5
33-
github.com/google/go-github/v82 v82.0.0
33+
github.com/google/go-github/v87 v87.0.0
3434
github.com/onsi/gomega v1.40.0
3535
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0
3636
golang.org/x/net v0.53.0

auth/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
115115
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
116116
github.com/google/go-containerregistry v0.21.5 h1:KTJG9Pn/jC0VdZR6ctV3/jcN+q6/Iqlx0sTVz3ywZlM=
117117
github.com/google/go-containerregistry v0.21.5/go.mod h1:ySvMuiWg+dOsRW0Hw8GYwfMwBlNRTmpYBFJPlkco5zU=
118-
github.com/google/go-github/v82 v82.0.0 h1:OH09ESON2QwKCUVMYmMcVu1IFKFoaZHwqYaUtr/MVfk=
119-
github.com/google/go-github/v82 v82.0.0/go.mod h1:hQ6Xo0VKfL8RZ7z1hSfB4fvISg0QqHOqe9BP0qo+WvM=
118+
github.com/google/go-github/v87 v87.0.0 h1:9Ck3dcOxWJyfsN8tzdah4YvmqB/7ZsstMglv/PkOsl0=
119+
github.com/google/go-github/v87 v87.0.0/go.mod h1:hGUoT5pwm/ck5uLL+wroSVQfg8mpe+buxllCcGV4VaM=
120120
github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0=
121121
github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU=
122122
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=

git/internal/e2e/github_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import (
3434
"github.com/fluxcd/pkg/auth/githubapp"
3535
"github.com/fluxcd/pkg/git"
3636
"github.com/fluxcd/pkg/git/gogit"
37-
gogithub "github.com/google/go-github/v82/github"
37+
gogithub "github.com/google/go-github/v87/github"
3838
)
3939

4040
const (

git/internal/e2e/go.mod

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ replace (
1212
)
1313

1414
require (
15-
github.com/fluxcd/go-git-providers v0.26.0
15+
github.com/fluxcd/go-git-providers v0.28.0
1616
github.com/fluxcd/pkg/auth v0.54.0
1717
github.com/fluxcd/pkg/git v0.52.0
1818
github.com/fluxcd/pkg/gittestserver v0.29.0
1919
github.com/fluxcd/pkg/ssh v0.25.0
2020
github.com/go-git/go-git/v5 v5.19.1
2121
github.com/go-logr/logr v1.4.3
22-
github.com/google/go-github/v82 v82.0.0
22+
github.com/google/go-github/v87 v87.0.0
2323
github.com/google/uuid v1.6.0
24-
github.com/onsi/gomega v1.40.0
24+
github.com/onsi/gomega v1.42.1
2525
)
2626

2727
require (
@@ -63,14 +63,14 @@ require (
6363
github.com/skeema/knownhosts v1.3.1 // indirect
6464
github.com/spf13/pflag v1.0.10 // indirect
6565
github.com/xanzy/ssh-agent v0.3.3 // indirect
66-
gitlab.com/gitlab-org/api/client-go v1.29.0 // indirect
66+
gitlab.com/gitlab-org/api/client-go v1.46.0 // indirect
6767
go.yaml.in/yaml/v2 v2.4.3 // indirect
6868
go.yaml.in/yaml/v3 v3.0.4 // indirect
69-
golang.org/x/crypto v0.50.0 // indirect
70-
golang.org/x/net v0.53.0 // indirect
69+
golang.org/x/crypto v0.53.0 // indirect
70+
golang.org/x/net v0.56.0 // indirect
7171
golang.org/x/oauth2 v0.36.0 // indirect
72-
golang.org/x/sys v0.43.0 // indirect
73-
golang.org/x/text v0.36.0 // indirect
72+
golang.org/x/sys v0.46.0 // indirect
73+
golang.org/x/text v0.38.0 // indirect
7474
golang.org/x/time v0.15.0 // indirect
7575
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect
7676
gopkg.in/warnings.v0 v0.1.2 // indirect

git/internal/e2e/go.sum

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
3131
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
3232
github.com/fluxcd/gitkit v0.6.0 h1:iNg5LTx6ePo+Pl0ZwqHTAkhbUHxGVSY3YCxCdw7VIFg=
3333
github.com/fluxcd/gitkit v0.6.0/go.mod h1:svOHuKi0fO9HoawdK4HfHAJJseZDHHjk7I3ihnCIqNo=
34-
github.com/fluxcd/go-git-providers v0.26.0 h1:0DUsXc1nS9Fe4n8tXSEUCGemWzHShd66gmotayDPekw=
35-
github.com/fluxcd/go-git-providers v0.26.0/go.mod h1:VJDKUOhZwNAIqDF5iPtIpTr/annsDbKMkPpWiDMBdpo=
34+
github.com/fluxcd/go-git-providers v0.28.0 h1:Dwwv7uaWP95DKnUUMbZXluNMKMlerHlXE8UvDGh2DHo=
35+
github.com/fluxcd/go-git-providers v0.28.0/go.mod h1:w/Re6C++F8msYB6oiQW6v20f5dBFJfkhPPsJg9/ddHs=
3636
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
3737
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
3838
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
@@ -58,12 +58,14 @@ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUv
5858
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
5959
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
6060
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
61-
github.com/google/go-github/v82 v82.0.0 h1:OH09ESON2QwKCUVMYmMcVu1IFKFoaZHwqYaUtr/MVfk=
62-
github.com/google/go-github/v82 v82.0.0/go.mod h1:hQ6Xo0VKfL8RZ7z1hSfB4fvISg0QqHOqe9BP0qo+WvM=
61+
github.com/google/go-github/v87 v87.0.0 h1:9Ck3dcOxWJyfsN8tzdah4YvmqB/7ZsstMglv/PkOsl0=
62+
github.com/google/go-github/v87 v87.0.0/go.mod h1:hGUoT5pwm/ck5uLL+wroSVQfg8mpe+buxllCcGV4VaM=
6363
github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0=
6464
github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU=
6565
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
6666
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
67+
github.com/graph-gophers/graphql-go v1.9.0 h1:yu0ucKHLc5qGpRwLYKIWtr9bOoxovkWasuBrPQwlHls=
68+
github.com/graph-gophers/graphql-go v1.9.0/go.mod h1:23olKZ7duEvHlF/2ELEoSZaY1aNPfShjP782SOoNTyM=
6769
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
6870
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
6971
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -104,8 +106,8 @@ github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
104106
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
105107
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
106108
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
107-
github.com/onsi/gomega v1.40.0 h1:Vtol0e1MghCD2ZVIilPDIg44XSL9l2QAn8ZNaljWcJc=
108-
github.com/onsi/gomega v1.40.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A=
109+
github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I=
110+
github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg=
109111
github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU=
110112
github.com/pjbgf/sha1cd v0.6.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
111113
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -137,24 +139,24 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu
137139
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
138140
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
139141
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
140-
gitlab.com/gitlab-org/api/client-go v1.29.0 h1:3KnF6vENry/9v9eVrnLi2OfBV0m/WSrwh3RcxgH/hkA=
141-
gitlab.com/gitlab-org/api/client-go v1.29.0/go.mod h1:6i3EZtC6gKiTTmDwp+f6r/Yi9OY4AaYubl5B3yXEdHE=
142+
gitlab.com/gitlab-org/api/client-go v1.46.0 h1:YxBWFZIFYKcGESCb9fpkwzouo+apyB9pr/XTWzNoL24=
143+
gitlab.com/gitlab-org/api/client-go v1.46.0/go.mod h1:FtgyU6g2HS5+fMhw6nLK96GBEEBx5MzntOiJWfIaiN8=
142144
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
143145
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
144146
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
145147
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
146-
go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
147-
go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
148+
go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo=
149+
go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q=
148150
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
149151
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
150152
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
151153
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
152154
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
153-
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
154-
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
155+
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
156+
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
155157
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
156-
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
157-
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
158+
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
159+
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
158160
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
159161
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
160162
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -163,14 +165,14 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w
163165
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
164166
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
165167
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
166-
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
167-
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
168+
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
169+
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
168170
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
169-
golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY=
170-
golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
171+
golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc=
172+
golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y=
171173
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
172-
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
173-
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
174+
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
175+
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
174176
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
175177
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
176178
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -188,5 +190,5 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
188190
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
189191
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
190192
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
191-
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU=
192-
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
193+
k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 h1:wU4tMEhLGgIbLvXQb1cfN+EcM0wf7zC6CPF+C79jroc=
194+
k8s.io/utils v0.0.0-20260507154919-ff6756f316d2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=

0 commit comments

Comments
 (0)