From 79a830ce02caf1c636293eb392d0bf32fd689dd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 23:33:55 +0000 Subject: [PATCH] :seedling: bump the k8s-dependencies group with 9 updates Bumps the k8s-dependencies group with 9 updates: | Package | From | To | | --- | --- | --- | | [k8s.io/api](https://github.com/kubernetes/api) | `0.37.1` | `0.37.2` | | [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.37.1` | `0.37.2` | | [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.37.1` | `0.37.2` | | [k8s.io/apiserver](https://github.com/kubernetes/apiserver) | `0.37.1` | `0.37.2` | | [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.37.1` | `0.37.2` | | [k8s.io/code-generator](https://github.com/kubernetes/code-generator) | `0.37.1` | `0.37.2` | | [k8s.io/component-base](https://github.com/kubernetes/component-base) | `0.37.1` | `0.37.2` | | [k8s.io/kube-aggregator](https://github.com/kubernetes/kube-aggregator) | `0.37.1` | `0.37.2` | | [sigs.k8s.io/controller-tools](https://github.com/kubernetes-sigs/controller-tools) | `0.22.0` | `0.23.0` | Updates `k8s.io/api` from 0.37.1 to 0.37.2 - [Commits](https://github.com/kubernetes/api/compare/v0.37.1...v0.37.2) Updates `k8s.io/apiextensions-apiserver` from 0.37.1 to 0.37.2 - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.37.1...v0.37.2) Updates `k8s.io/apimachinery` from 0.37.1 to 0.37.2 - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.37.1...v0.37.2) Updates `k8s.io/apiserver` from 0.37.1 to 0.37.2 - [Commits](https://github.com/kubernetes/apiserver/compare/v0.37.1...v0.37.2) Updates `k8s.io/client-go` from 0.37.1 to 0.37.2 - [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes/client-go/compare/v0.37.1...v0.37.2) Updates `k8s.io/code-generator` from 0.37.1 to 0.37.2 - [Commits](https://github.com/kubernetes/code-generator/compare/v0.37.1...v0.37.2) Updates `k8s.io/component-base` from 0.37.1 to 0.37.2 - [Commits](https://github.com/kubernetes/component-base/compare/v0.37.1...v0.37.2) Updates `k8s.io/kube-aggregator` from 0.37.1 to 0.37.2 - [Commits](https://github.com/kubernetes/kube-aggregator/compare/v0.37.1...v0.37.2) Updates `sigs.k8s.io/controller-tools` from 0.22.0 to 0.23.0 - [Release notes](https://github.com/kubernetes-sigs/controller-tools/releases) - [Changelog](https://github.com/kubernetes-sigs/controller-tools/blob/main/RELEASE.md) - [Commits](https://github.com/kubernetes-sigs/controller-tools/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: k8s.io/api dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/apiextensions-apiserver dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/apimachinery dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/apiserver dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/client-go dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/code-generator dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/component-base dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: k8s.io/kube-aggregator dependency-version: 0.37.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-dependencies - dependency-name: sigs.k8s.io/controller-tools dependency-version: 0.23.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-dependencies ... Signed-off-by: dependabot[bot] --- go.mod | 22 ++--- go.sum | 44 ++++----- .../pkg/server/deprecated_insecure_serving.go | 2 + .../pkg/server/header_value_count_go127.go | 29 ++++++ .../server/header_value_count_pre_go127.go | 24 +++++ .../apiserver/pkg/server/secure_serving.go | 2 + vendor/modules.txt | 22 ++--- .../cmd/controller-gen/main.go | 4 +- .../pkg/applyconfiguration/gen.go | 17 ++++ .../zz_generated.markerhelp.go | 4 + .../controller-tools/pkg/crd/flatten.go | 2 +- .../controller-tools/pkg/crd/gen.go | 11 ++- .../pkg/crd/markers/validation.go | 94 ++++++++++++++++++- .../crd/markers/zz_generated.markerhelp.go | 11 +++ .../controller-tools/pkg/crd/schema.go | 56 ++++++----- .../pkg/crd/zz_generated.markerhelp.go | 4 + .../pkg/genall/help/pretty/print.go | 28 +++--- 17 files changed, 292 insertions(+), 84 deletions(-) create mode 100644 vendor/k8s.io/apiserver/pkg/server/header_value_count_go127.go create mode 100644 vendor/k8s.io/apiserver/pkg/server/header_value_count_pre_go127.go diff --git a/go.mod b/go.mod index efbd078cbe..5c36ffdbd7 100644 --- a/go.mod +++ b/go.mod @@ -39,19 +39,19 @@ require ( golang.org/x/sync v0.24.0 golang.org/x/time v0.16.0 google.golang.org/grpc v1.84.0 - k8s.io/api v0.37.1 - k8s.io/apiextensions-apiserver v0.37.1 - k8s.io/apimachinery v0.37.1 - k8s.io/apiserver v0.37.1 - k8s.io/client-go v0.37.1 - k8s.io/code-generator v0.37.1 - k8s.io/component-base v0.37.1 + k8s.io/api v0.37.2 + k8s.io/apiextensions-apiserver v0.37.2 + k8s.io/apimachinery v0.37.2 + k8s.io/apiserver v0.37.2 + k8s.io/client-go v0.37.2 + k8s.io/code-generator v0.37.2 + k8s.io/component-base v0.37.2 k8s.io/klog/v2 v2.140.0 - k8s.io/kube-aggregator v0.37.1 + k8s.io/kube-aggregator v0.37.2 k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 sigs.k8s.io/controller-runtime v0.25.2 - sigs.k8s.io/controller-tools v0.22.0 + sigs.k8s.io/controller-tools v0.23.0 ) require ( @@ -193,8 +193,8 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/gengo/v2 v2.0.0-20260408192533-25e2208e0dc3 // indirect - k8s.io/kms v0.37.1 // indirect - k8s.io/streaming v0.37.1 // indirect + k8s.io/kms v0.37.2 // indirect + k8s.io/streaming v0.37.2 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/go.sum b/go.sum index ab21363ff9..19d3e45aac 100644 --- a/go.sum +++ b/go.sum @@ -640,32 +640,32 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.37.1 h1:l6N77U7tjwB5L056bgrBTJIEdevac/naBZ3iSvDNfpM= -k8s.io/api v0.37.1/go.mod h1:zSlbB1YpJ1YQlFVQy20UYll81UJSJJUMLhkhvg6Z78M= -k8s.io/apiextensions-apiserver v0.37.1 h1:7fIQG8eThDSTVYBWg/DOpI8v5wYfKCo0N8/TDMjj+zY= -k8s.io/apiextensions-apiserver v0.37.1/go.mod h1:1Q3ujWwHgnhBoGsdmGORflwK1sDFmuaqH1OsMDWk2Gs= -k8s.io/apimachinery v0.37.1 h1:hGCYyvKHCwtwMitj2vU4vYx0Z16N9GyZk9BBnz0wDAE= -k8s.io/apimachinery v0.37.1/go.mod h1:jF84AyUi/IRIXRot5f+lm6MpxoWI+F1XgjaMmwCdTFw= -k8s.io/apiserver v0.37.1 h1:dUsNwjsvItyVKNpC1N0AhQ0OBSiUJKfWz004vPifOe0= -k8s.io/apiserver v0.37.1/go.mod h1:EWXW6PntGfOC2uD9GGVobnOExgFoX1z0hZo7f7Rs7Ng= -k8s.io/client-go v0.37.1 h1:QTv/5ha4jAHtW9qxxVBkQVFBRDb4jHfFopQqqMdc+wM= -k8s.io/client-go v0.37.1/go.mod h1:dnAPtTnCNY38Ho04D2KdY1F4IKausa9UbqaAZKl60SY= -k8s.io/code-generator v0.37.1 h1:tvxxAiGc2kMxoGx8HtUacs4cBdl0X5R+auBD2He974U= -k8s.io/code-generator v0.37.1/go.mod h1:RJepz1uW2WnHEwPDoCGzI3p4V23C7WuUdtqjueDl1uU= -k8s.io/component-base v0.37.1 h1:93DMmlENnK7gNLkL4pMqLO5M/HVf3p3sM4q/GasLveY= -k8s.io/component-base v0.37.1/go.mod h1:bBrdziT4dreQG5lzTaPVxBwsZe1oxphG+ZVdD56dQWQ= +k8s.io/api v0.37.2 h1:PnxqnUFy93jr2GcpWDkKOm8wfy25kT9wa572MuQS8oc= +k8s.io/api v0.37.2/go.mod h1:+NVRLft99kx+Jg9v34GmHw867Dapim89TSyCsn2hK+M= +k8s.io/apiextensions-apiserver v0.37.2 h1:myaUiAlm1NRLYdpAvWYTqdgeiCepFupJiRFVVueMUYw= +k8s.io/apiextensions-apiserver v0.37.2/go.mod h1:BFl1aPC89HsgFgYI+3xpFtckvkAeenDTZP84njA9yw4= +k8s.io/apimachinery v0.37.2 h1:G4t9RGoPDbQML38hz/kQQiltttgd3egg2ODCR8aIc2o= +k8s.io/apimachinery v0.37.2/go.mod h1:qaAvSNvgU2x07wRM95MSHSJTPQ/ob/LeNAGbeDgqQJg= +k8s.io/apiserver v0.37.2 h1:9Jq73PeHAA0RThpW7ou6lBcO2+SxLcPrAgleONSMUNQ= +k8s.io/apiserver v0.37.2/go.mod h1:d0P4WZtt6XMYAo6VN8dDPRnvY3O34quI3pOuxtfgAgM= +k8s.io/client-go v0.37.2 h1:sgFtyRZukGkOrsu+QgS7LYnbFFJ5ut3MchdBNduD//E= +k8s.io/client-go v0.37.2/go.mod h1:bo3LFC8YbCtKFPX21Yj8puMsoJLAv/+SvuOODma0s54= +k8s.io/code-generator v0.37.2 h1:wfx7G5OkCTJktFu7HkEDTEa6iBYr3RMi2TTC3LBLfOE= +k8s.io/code-generator v0.37.2/go.mod h1:k24CS91bM7Kk5b776drjJYvvfLT5vceiLeOzTxNsEUc= +k8s.io/component-base v0.37.2 h1:Ia9IKTg1yWrUntJU5lVetapkC9pXlLg9L6P3R1IkbcY= +k8s.io/component-base v0.37.2/go.mod h1:qq+ueHZyLfzRJzxyDoyxHWNhF1JPv4zm3hcaddXWDvY= k8s.io/gengo/v2 v2.0.0-20260408192533-25e2208e0dc3 h1:3L6PNkMLXkU/pz3jWzaaIUz0Rs2V9h+5O51AeRC7poc= k8s.io/gengo/v2 v2.0.0-20260408192533-25e2208e0dc3/go.mod h1:yvyl3l9E+UxlqOMUULdKTAYB0rEhsmjr7+2Vb/1pCSo= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= -k8s.io/kms v0.37.1 h1:MD1kA8AdFF/N5sGP8gnvL6vTo/oeaQXbmLjWmmJHLc8= -k8s.io/kms v0.37.1/go.mod h1:0U6zfwLkfJr9O/jLgz2GARnKLh2uIhkq2EeaU66J5ow= -k8s.io/kube-aggregator v0.37.1 h1:P5ksohEbY6xbSyHgZcd+ofhCekMN9zqeCeSylrLHnCY= -k8s.io/kube-aggregator v0.37.1/go.mod h1:7rWjY2B0eVUqzXwPkdI/RCeyyTt25F6jvz/6hjPfGIg= +k8s.io/kms v0.37.2 h1:d9u/eizxE9pSa3jjnvoaLvvb9LwiypwkZ9xD4I4ZbTo= +k8s.io/kms v0.37.2/go.mod h1:0U6zfwLkfJr9O/jLgz2GARnKLh2uIhkq2EeaU66J5ow= +k8s.io/kube-aggregator v0.37.2 h1:cUT/C/WM3UtoREoTYthSCFxldpdG3y5q9UniWYxcmPE= +k8s.io/kube-aggregator v0.37.2/go.mod h1:GsqVEKZkXn49ObCHg5NvYngIhM18Uup1Bg6Q3Lzu89A= k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad h1:oXImqH8mQNk7PmvzKhmN3ddJoY6OnyM225MXwGHPm0A= k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad/go.mod h1:0/mqHCVhlumdJ3BhCfnjSZQE037nAhNodh1/hK0T8/I= -k8s.io/streaming v0.37.1 h1:TpzVfQeFuVndn2g9mFqxy1UcUYPwDzqjUmwR/IzJCWc= -k8s.io/streaming v0.37.1/go.mod h1:APlJR26ZWRcVy5bIEj0QRrKUXROtBHPcxl2NT7EAzPU= +k8s.io/streaming v0.37.2 h1:xmzp9nbqIbjvsRcqrBYa+K5XPQ6Jy/Dm3zZ8mN916AI= +k8s.io/streaming v0.37.2/go.mod h1:APlJR26ZWRcVy5bIEj0QRrKUXROtBHPcxl2NT7EAzPU= k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 h1:jVkFFVfXdXP74B/zbO3hM3hpSFD0xvhQ5U686DPurkE= k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3/go.mod h1:M2s5JB1lIYP3jzZdorPLHXIPJzt9vv2muW5a6L9DtNM= oras.land/oras-go/v2 v2.6.2 h1:N04RXngAp1LJKTG6ifz3xHPipasEkWr+hFmInja5YKo= @@ -674,8 +674,8 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 h1:/YpDJ4vReG7Zm sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0/go.mod h1:tJo1aepTXyR+8Xs3sUsGBDk4Ub2AM5dPAPKJx0mpm5c= sigs.k8s.io/controller-runtime v0.25.2 h1:bEkK3PVOIVK9X8QWLGVhJgmFc++47vfT6wakSzAOLsQ= sigs.k8s.io/controller-runtime v0.25.2/go.mod h1:4QqLdT6z/L6Olj8JJCtvztid4/fnIiYsfaTFScegctc= -sigs.k8s.io/controller-tools v0.22.0 h1:eG3FAVja/KnlXKIWg95udIFz1cMyAtMjP11cqBh3t+k= -sigs.k8s.io/controller-tools v0.22.0/go.mod h1:VizwUStoZK7rReCj704czGGrB7mLxXTiJSJt7wN5ilI= +sigs.k8s.io/controller-tools v0.23.0 h1:GFmPTaHSyje/kZv/4XOdR1v3rWz0/OJixwpPnGyV4Sw= +sigs.k8s.io/controller-tools v0.23.0/go.mod h1:JJRl1h3BoHJWtCVgwGsITk+dusn8LatINcIBhO8aP9A= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= diff --git a/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go b/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go index 04375d1dd7..f720a6069d 100644 --- a/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go +++ b/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go @@ -50,6 +50,8 @@ func (s *DeprecatedInsecureServingInfo) Serve(handler http.Handler, shutdownTime ReadHeaderTimeout: 32 * time.Second, // just shy of requestTimeoutUpperBound } + setMaxHeaderValueCount(insecureServer) + if len(s.Name) > 0 { klog.Infof("Serving %s insecurely on %s", s.Name, s.Listener.Addr()) } else { diff --git a/vendor/k8s.io/apiserver/pkg/server/header_value_count_go127.go b/vendor/k8s.io/apiserver/pkg/server/header_value_count_go127.go new file mode 100644 index 0000000000..8af0dfb84c --- /dev/null +++ b/vendor/k8s.io/apiserver/pkg/server/header_value_count_go127.go @@ -0,0 +1,29 @@ +//go:build go1.27 + +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package server + +import "net/http" + +// 1 MiB MaxHeaderBytes / 64 bytes per value (~16 for header and ~48 for value) bounds tiny-header floods +// while allowing thousands of identity groups sent one per header line. +const maxHeaderValueCount = 16384 + +func setMaxHeaderValueCount(server *http.Server) { + server.MaxHeaderValueCount = maxHeaderValueCount +} diff --git a/vendor/k8s.io/apiserver/pkg/server/header_value_count_pre_go127.go b/vendor/k8s.io/apiserver/pkg/server/header_value_count_pre_go127.go new file mode 100644 index 0000000000..f051cbc79a --- /dev/null +++ b/vendor/k8s.io/apiserver/pkg/server/header_value_count_pre_go127.go @@ -0,0 +1,24 @@ +//go:build !go1.27 + +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package server + +import "net/http" + +// Go versions before 1.27 do not limit the number of header values. +func setMaxHeaderValueCount(*http.Server) {} diff --git a/vendor/k8s.io/apiserver/pkg/server/secure_serving.go b/vendor/k8s.io/apiserver/pkg/server/secure_serving.go index 0c14893a74..0cdbd69020 100644 --- a/vendor/k8s.io/apiserver/pkg/server/secure_serving.go +++ b/vendor/k8s.io/apiserver/pkg/server/secure_serving.go @@ -175,6 +175,8 @@ func (s *SecureServingInfo) Serve(handler http.Handler, shutdownTimeout time.Dur ReadHeaderTimeout: 32 * time.Second, // just shy of requestTimeoutUpperBound } + setMaxHeaderValueCount(secureServer) + if !s.DisableHTTP2 { // At least 99% of serialized resources in surveyed clusters were smaller than 256kb. // This should be big enough to accommodate most API POST requests in a single frame, diff --git a/vendor/modules.txt b/vendor/modules.txt index 794c10513b..f9df3c03d4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1111,7 +1111,7 @@ gopkg.in/warnings.v0 # gopkg.in/yaml.v2 v2.4.0 ## explicit; go 1.15 gopkg.in/yaml.v2 -# k8s.io/api v0.37.1 +# k8s.io/api v0.37.2 ## explicit; go 1.26.0 k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 @@ -1173,7 +1173,7 @@ k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 k8s.io/api/storagemigration/v1 k8s.io/api/storagemigration/v1beta1 -# k8s.io/apiextensions-apiserver v0.37.1 +# k8s.io/apiextensions-apiserver v0.37.2 ## explicit; go 1.26.0 k8s.io/apiextensions-apiserver/pkg/apihelpers k8s.io/apiextensions-apiserver/pkg/apis/apiextensions @@ -1200,7 +1200,7 @@ k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextension k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1 k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake k8s.io/apiextensions-apiserver/pkg/features -# k8s.io/apimachinery v0.37.1 +# k8s.io/apimachinery v0.37.2 ## explicit; go 1.26.0 k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors @@ -1268,7 +1268,7 @@ k8s.io/apimachinery/pkg/version k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/apiserver v0.37.1 +# k8s.io/apiserver v0.37.2 ## explicit; go 1.26.0 k8s.io/apiserver/pkg/admission k8s.io/apiserver/pkg/admission/configuration @@ -1454,7 +1454,7 @@ k8s.io/apiserver/plugin/pkg/audit/webhook k8s.io/apiserver/plugin/pkg/authenticator/token/webhook k8s.io/apiserver/plugin/pkg/authorizer/webhook k8s.io/apiserver/plugin/pkg/authorizer/webhook/metrics -# k8s.io/client-go v0.37.1 +# k8s.io/client-go v0.37.2 ## explicit; go 1.26.0 k8s.io/client-go/applyconfigurations k8s.io/client-go/applyconfigurations/admissionregistration/v1 @@ -1801,7 +1801,7 @@ k8s.io/client-go/util/keyutil k8s.io/client-go/util/retry k8s.io/client-go/util/watchlist k8s.io/client-go/util/workqueue -# k8s.io/code-generator v0.37.1 +# k8s.io/code-generator v0.37.2 ## explicit; go 1.26.0 k8s.io/code-generator k8s.io/code-generator/cmd/applyconfiguration-gen @@ -1841,7 +1841,7 @@ k8s.io/code-generator/pkg/apidefinitions k8s.io/code-generator/pkg/namer k8s.io/code-generator/pkg/util k8s.io/code-generator/third_party/forked/golang/reflect -# k8s.io/component-base v0.37.1 +# k8s.io/component-base v0.37.2 ## explicit; go 1.26.0 k8s.io/component-base/cli/flag k8s.io/component-base/compatibility @@ -1885,13 +1885,13 @@ k8s.io/klog/v2/internal/severity k8s.io/klog/v2/internal/sloghandler k8s.io/klog/v2/internal/verbosity k8s.io/klog/v2/textlogger -# k8s.io/kms v0.37.1 +# k8s.io/kms v0.37.2 ## explicit; go 1.26.0 k8s.io/kms/apis/v1beta1 k8s.io/kms/apis/v2 k8s.io/kms/pkg/service k8s.io/kms/pkg/util -# k8s.io/kube-aggregator v0.37.1 +# k8s.io/kube-aggregator v0.37.2 ## explicit; go 1.26.0 k8s.io/kube-aggregator/pkg/apis/apiregistration k8s.io/kube-aggregator/pkg/apis/apiregistration/v1 @@ -1947,7 +1947,7 @@ k8s.io/kube-openapi/pkg/validation/spec k8s.io/kube-openapi/pkg/validation/strfmt k8s.io/kube-openapi/pkg/validation/strfmt/bson k8s.io/kube-openapi/pkg/validation/validate -# k8s.io/streaming v0.37.1 +# k8s.io/streaming v0.37.2 ## explicit; go 1.26.0 k8s.io/streaming/pkg/httpstream k8s.io/streaming/pkg/httpstream/wsstream @@ -2032,7 +2032,7 @@ sigs.k8s.io/controller-runtime/pkg/webhook/admission/metrics sigs.k8s.io/controller-runtime/pkg/webhook/conversion sigs.k8s.io/controller-runtime/pkg/webhook/conversion/metrics sigs.k8s.io/controller-runtime/pkg/webhook/internal/metrics -# sigs.k8s.io/controller-tools v0.22.0 +# sigs.k8s.io/controller-tools v0.23.0 ## explicit; go 1.26.0 sigs.k8s.io/controller-tools/cmd/controller-gen sigs.k8s.io/controller-tools/pkg/applyconfiguration diff --git a/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go b/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go index 8ee14dd7a6..ef51725c68 100644 --- a/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go +++ b/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go @@ -249,7 +249,7 @@ func helpForLevels(mainOut io.Writer, errOut io.Writer, whichLevel int, reg *mar continue } contents := prettyhelp.MarkersDetails(fullDetail, cat.Category, cat.Markers) - if err := contents.WriteTo(errOut); err != nil { + if err := contents.Write(errOut); err != nil { return err } } @@ -259,7 +259,7 @@ func helpForLevels(mainOut io.Writer, errOut io.Writer, whichLevel int, reg *mar continue } contents := prettyhelp.MarkersSummary(cat.Category, cat.Markers) - if err := contents.WriteTo(errOut); err != nil { + if err := contents.Write(errOut); err != nil { return err } } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/gen.go index 529f6a38b5..a1469a6fd5 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/gen.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/gen.go @@ -71,6 +71,14 @@ type Generator struct { // For example, to reference the apply configuration for corev1.LocalObjectReference: // k8s.io/api/core/v1.LocalObjectReference@k8s.io/client-go/applyconfigurations/core/v1 ExternalApplyConfigurations []string `marker:",optional"` + + // OmitToolVersion omits the tool version from the "Code generated by" file header. + // + // When set, the generator name in the header is normalized to "controller-gen" + // regardless of the binary name, instead of any version-bearing name. This only + // affects the header comment; no annotations are involved. Left unspecified, the + // default is false. + OmitToolVersion *bool `marker:",optional"` } func (Generator) CheckFilter() loader.NodeFilter { @@ -169,6 +177,15 @@ func (d Generator) Generate(ctx *genall.GenerationContext) error { externalACs[typeName] = parts[1] } + // When OmitToolVersion is true, override os.Args[0] so that gengo's + // GoBoilerplate (which reads filepath.Base(os.Args[0])) emits a + // version-free "Code generated by controller-gen" header. + if d.OmitToolVersion != nil && *d.OmitToolVersion { + origArgs0 := os.Args[0] + os.Args[0] = "controller-gen" + defer func() { os.Args[0] = origArgs0 }() + } + objGenCtx := ObjectGenCtx{ Collector: ctx.Collector, Checker: ctx.Checker, diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/zz_generated.markerhelp.go index 935eef0c66..799f146014 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/zz_generated.markerhelp.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/applyconfiguration/zz_generated.markerhelp.go @@ -40,6 +40,10 @@ func (Generator) Help() *markers.DefinitionHelp { Summary: "provides mappings between external types and their applyconfiguration packages.", Details: "Use this to reference apply configuration types for external types referenced\nby the Go structs provided as input. Each entry should be in the format:\n .@\n\nFor example, to reference the apply configuration for corev1.LocalObjectReference:\n k8s.io/api/core/v1.LocalObjectReference@k8s.io/client-go/applyconfigurations/core/v1", }, + "OmitToolVersion": { + Summary: "omits the tool version from the \"Code generated by\" file header.", + Details: "When set, the generator name in the header is normalized to \"controller-gen\"\nregardless of the binary name, instead of any version-bearing name. This only\naffects the header comment; no annotations are involved. Left unspecified, the\ndefault is false.", + }, }, } } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go index 74279491f0..de21f7a1b9 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go @@ -112,7 +112,7 @@ func resolveFieldConflict(fieldName string, srcField, dstField reflect.Value, sr case "XPreserveUnknownFields": dstField.Set(srcField) return false - case "XMapType": + case "XMapType", "XListType", "XListMapKeys": dstField.Set(srcField) return false case "XValidations": diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go index e27a865ab7..9ea4d99c3c 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go @@ -98,6 +98,13 @@ type Generator struct { // See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning // for more information about field pruning and v1beta1 resources compatibility. DeprecatedV1beta1CompatibilityPreserveUnknownFields *bool `marker:",optional"` + + // OmitToolVersion omits the controller-gen version annotation from the generated CRD. + // + // When set, the controller-gen.kubebuilder.io/version annotation is not written + // to the CRD's metadata. This only affects that annotation; the generated schema + // is unchanged. Left unspecified, the default is false. + OmitToolVersion *bool `marker:",optional"` } func (Generator) CheckFilter() loader.NodeFilter { @@ -180,7 +187,9 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error { for _, groupKind := range kubeKinds { parser.NeedCRDFor(groupKind, g.MaxDescLen) crdRaw := parser.CustomResourceDefinitions[groupKind] - addAttribution(&crdRaw) + if g.OmitToolVersion == nil || !*g.OmitToolVersion { + addAttribution(&crdRaw) + } // Prevent the top level metadata for the CRD to be generate regardless of the intention in the arguments FixTopLevelMetadata(crdRaw) diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go index 82ade275f3..03ae113f00 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go @@ -114,7 +114,7 @@ var FieldOnlyMarkers = []*definitionWithHelp{ WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is required.")), must(markers.MakeDefinition("optional", markers.DescribesField, struct{}{})). WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is optional.")), - must(markers.MakeDefinition("k8s:required", markers.DescribesField, struct{}{})). + must(markers.MakeDefinition("k8s:required", markers.DescribesField, K8sRequired{})). WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is required.")), must(markers.MakeDefinition("k8s:optional", markers.DescribesField, struct{}{})). WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is optional.")), @@ -137,6 +137,15 @@ var FieldOnlyMarkers = []*definitionWithHelp{ must(markers.MakeDefinition("k8s:immutable", markers.DescribesField, Immutable{})). WithHelp(Immutable{}.Help()), + + // Kubernetes declarative validation aliases. These bounds are especially + // important for keeping the estimated cost of CEL rules finite. + must(markers.MakeDefinition("k8s:maxItems", markers.DescribesField, MaxItems(0))). + WithHelp(declarativeValidationMarkerHelp(MaxItems(0).Help(), "kubebuilder:validation:MaxItems", "k8s:maxItems")), + must(markers.MakeDefinition("k8s:minimum", markers.DescribesField, Minimum(0))). + WithHelp(declarativeValidationMarkerHelp(Minimum(0).Help(), "kubebuilder:validation:Minimum", "k8s:minimum")), + must(markers.MakeDefinition("k8s:maximum", markers.DescribesField, Maximum(0))). + WithHelp(declarativeValidationMarkerHelp(Maximum(0).Help(), "kubebuilder:validation:Maximum", "k8s:maximum")), } // ValidationIshMarkers are field-and-type markers that don't fall under the @@ -209,6 +218,43 @@ func (m Minimum) Value() float64 { return float64(m) } +func declarativeValidationMarkerHelp(help *markers.DefinitionHelp, oldName, newName string) *markers.DefinitionHelp { + result := *help + result.Details = strings.ReplaceAll(result.Details, oldName, newName) + return &result +} + +// stripCommentIfDeclarativeValidationMarker strips trailing '#' comments from +// declarative validation markers, matching the gengo codetags parser used by +// validation-gen. Whitespace before '#' is optional. +// https://github.com/kubernetes/gengo/blob/25e2208e0dc371a827289e7faced19a2dbcd480b/v2/codetags/scanner.go#L69-L73 +func stripCommentIfDeclarativeValidationMarker(name, restFields string) string { + if strings.HasPrefix(name, "k8s:") { + if comment := strings.IndexByte(restFields, '#'); comment >= 0 { + restFields = restFields[:comment] + } + } + return strings.TrimSpace(restFields) +} + +func (m *Maximum) ParseMarker(_, name, restFields string) error { + value, err := strconv.ParseFloat(stripCommentIfDeclarativeValidationMarker(name, restFields), 64) + if err != nil { + return fmt.Errorf("invalid maximum value: %w", err) + } + *m = Maximum(value) + return nil +} + +func (m *Minimum) ParseMarker(_, name, restFields string) error { + value, err := strconv.ParseFloat(stripCommentIfDeclarativeValidationMarker(name, restFields), 64) + if err != nil { + return fmt.Errorf("invalid minimum value: %w", err) + } + *m = Minimum(value) + return nil +} + // ExclusiveMinimum indicates that the minimum is "up to" but not including that value. // // Example (value must be greater than 0, not greater than or equal to 0): @@ -285,6 +331,15 @@ type Pattern string // +controllertools:marker:generateHelp:category="CRD validation" type MaxItems int +func (m *MaxItems) ParseMarker(_, name, restFields string) error { + value, err := strconv.Atoi(stripCommentIfDeclarativeValidationMarker(name, restFields)) + if err != nil { + return fmt.Errorf("invalid maxItems value: %w", err) + } + *m = MaxItems(value) + return nil +} + // MinItems specifies the minimum length for this list. // // Example: @@ -1187,3 +1242,40 @@ func (K8sEnum) ApplyToSchema(ctx *SchemaContext, schema *apiextensionsv1.JSONSch schema.Enum = enumValues return nil } + +// K8sRequired specifies that this field is required. +// When applied to a string, it also ensures that the string has a minimum length of 1. +// When applied to a map, it also ensures that the map has at least 1 property. +// When applied to a slice, it also ensures that the slice has at least 1 item. +// When applied to a struct, it also ensures that the struct has at least 1 field set. +// These minimum constraints are only applied if they are not explicitly set. +// +// +controllertools:marker:generateHelp:category="CRD validation" +type K8sRequired struct{} + +func (m K8sRequired) ApplyToSchema(ctx *SchemaContext, schema *apiextensionsv1.JSONSchemaProps) error { + switch schema.Type { + case "string": + if schema.MinLength == nil { + val := int64(1) + schema.MinLength = &val + } + case "array": + if schema.MinItems == nil { + val := int64(1) + schema.MinItems = &val + } + case "object": + if schema.MinProperties == nil { + val := int64(1) + schema.MinProperties = &val + } + default: + // If the schema is a reference to a type. + if schema.Ref != nil && schema.MinProperties == nil { + val := int64(1) + schema.MinProperties = &val + } + } + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go index 8c6ec37c85..f49fe7150d 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go @@ -180,6 +180,17 @@ func (Immutable) Help() *markers.DefinitionHelp { } } +func (K8sRequired) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies that this field is required.", + Details: "When applied to a string, it also ensures that the string has a minimum length of 1.\nWhen applied to a map, it also ensures that the map has at least 1 property.\nWhen applied to a slice, it also ensures that the slice has at least 1 item.\nWhen applied to a struct, it also ensures that the struct has at least 1 field set.\nThese minimum constraints are only applied if they are not explicitly set.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + func (KubernetesDefault) Help() *markers.DefinitionHelp { return &markers.DefinitionHelp{ Category: "CRD validation", diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go index 129e68a6df..270eaccaab 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go @@ -38,6 +38,9 @@ import ( const ( // defPrefix is the prefix used to link to definitions in the OpenAPI schema. defPrefix = "#/definitions/" + + // arrayType is the JSON schema type for arrays. + arrayType = "array" ) // byteType is the types.Type for byte (see the types documention @@ -237,7 +240,7 @@ func applyMarkers(ctx *schemaContext, markerSet markers.MarkerValues, props *api } for _, schemaMarker := range itemsMarkers { - if props.Type != "array" || props.Items == nil || props.Items.Schema == nil { + if props.Type != arrayType || props.Items == nil || props.Items.Schema == nil { err := fmt.Errorf("must apply %s to an array value, found %s", schemaMarker.Name, props.Type) ctx.pkg.AddError(loader.ErrFromNode(err, node)) } else { @@ -348,26 +351,30 @@ func localNamedToSchema(ctx *schemaContext, ident *ast.Ident) *apiextensionsv1.J ctx.requestSchemaWithPkg(pkgPath, typeNameInfo.Name(), pkg) link := TypeRefLink(pkgPath, typeNameInfo.Name()) - // In cases where we have a named type, apply the type and format from the named schema - // to allow markers that need this information to apply correctly. - var typ, fmt string - if namedInfo, isNamed := typeInfo.(*types.Named); isNamed { + props := &apiextensionsv1.JSONSchemaProps{ + Ref: &link, + } + + // Set the type for slice and map aliases so field-level markers like +listType + // and +mapType can work. Structs are skipped — they use a $ref only. + // Go 1.23+ (gotypesalias=1) represents `type Foo = []T` as *types.Alias, so + // unalias first to reach the real underlying type. + switch types.Unalias(typeInfo.(types.Type)).Underlying().(type) { + case *types.Slice: + props.Type = arrayType + case *types.Map: + //nolint:goconst + props.Type = "object" + case *types.Basic: // We don't want/need to do this for structs, maps, or arrays. // These are already handled in infoToSchema if they have custom marshalling. - if _, isBasic := namedInfo.Underlying().(*types.Basic); isBasic { - namedTypeInfo := ctx.schemaRequester.LookupType(ctx.pkg, namedInfo.Obj().Name()) - - namedSchema := infoToSchema(ctx.ForInfo(namedTypeInfo)) - typ = namedSchema.Type - fmt = namedSchema.Format - } + namedTypeInfo := ctx.schemaRequester.LookupType(ctx.pkg, typeNameInfo.Name()) + namedSchema := infoToSchema(ctx.ForInfo(namedTypeInfo)) + props.Type = namedSchema.Type + props.Format = namedSchema.Format } - return &apiextensionsv1.JSONSchemaProps{ - Type: typ, - Format: fmt, - Ref: &link, - } + return props default: ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("unsupported type %T for identifier %s", typeInfo, ident.Name), ident)) return &apiextensionsv1.JSONSchemaProps{} @@ -391,10 +398,19 @@ func namedToSchema(ctx *schemaContext, named *ast.SelectorExpr) *apiextensionsv1 nonVendorPath := loader.NonVendorPath(typesPkg.Path()) ctx.requestSchemaWithPkg(nonVendorPath, typeNameInfo.Name(), typesPkg) link := TypeRefLink(nonVendorPath, typeNameInfo.Name()) - return &apiextensionsv1.JSONSchemaProps{ + // Set the type for slice and map aliases so field-level markers like +listType + // and +mapType can work. Structs are skipped — they use a $ref only. + props := &apiextensionsv1.JSONSchemaProps{ Ref: &link, } + switch typeInfoRaw.Underlying().(type) { + case *types.Slice: + props.Type = arrayType + case *types.Map: + props.Type = "object" + } // NB(directxman12): we special-case things like resource.Quantity during the "collapse" phase. + return props } // arrayToSchema creates a schema for the items of the given array, dealing appropriately @@ -413,7 +429,7 @@ func arrayToSchema(ctx *schemaContext, array *ast.ArrayType) *apiextensionsv1.JS items := typeToSchema(ctx.ForInfo(&markers.TypeInfo{}), array.Elt) return &apiextensionsv1.JSONSchemaProps{ - Type: "array", + Type: arrayType, Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: items}, } } @@ -471,9 +487,7 @@ func mapToSchema(ctx *schemaContext, mapType *ast.MapType) *apiextensionsv1.JSON return &apiextensionsv1.JSONSchemaProps{} } - //nolint:goconst return &apiextensionsv1.JSONSchemaProps{ - //nolint:goconst // this is a constant, but it's more readable to have it here Type: "object", AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{ Schema: valSchema, diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go index 8471cfbcb8..8cccc74838 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go @@ -64,6 +64,10 @@ func (Generator) Help() *markers.DefinitionHelp { Summary: "indicates whether", Details: "or not we should turn off field pruning for this resource.\n\nSpecifies spec.preserveUnknownFields value that is false and omitted by default.\nThis value can only be specified for CustomResourceDefinitions that were created with\n`apiextensions.k8s.io/v1beta1`.\n\nThe field can be set for compatibility reasons, although strongly discouraged, resource\nauthors should move to a structural OpenAPI schema instead.\n\nSee https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning\nfor more information about field pruning and v1beta1 resources compatibility.", }, + "OmitToolVersion": { + Summary: "omits the controller-gen version annotation from the generated CRD.", + Details: "When set, the controller-gen.kubebuilder.io/version annotation is not written\nto the CRD's metadata. This only affects that annotation; the generated schema\nis unchanged. Left unspecified, the default is false.", + }, }, } } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go index a187387947..fe6f699ef5 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go @@ -35,8 +35,8 @@ type Span interface { // VisualLength reports the "width" as perceived by the user on the terminal // (i.e. widest line, ignoring ANSI escape characters). VisualLength() int - // WriteTo writes the full span contents to the given writer. - WriteTo(io.Writer) error + // Write writes the full span contents to the given writer. + Write(io.Writer) error } // Table is a Span that writes its data in table form, with sizing controlled @@ -77,7 +77,7 @@ func (t *Table) SkipRow(contents Span) { t.cellsByRow = append(t.cellsByRow, []Span{contents}) } -func (t *Table) WriteTo(out io.Writer) error { +func (t *Table) Write(out io.Writer) error { if t.colSizes == nil { t.colSizes = t.Sizing.ColumnWidths() } @@ -88,7 +88,7 @@ func (t *Table) WriteTo(out io.Writer) error { colSize := t.colSizes[colInd] diff := colSize - cell.VisualLength() - if err := cell.WriteTo(out); err != nil { + if err := cell.Write(out); err != nil { return err } @@ -124,7 +124,7 @@ func (t *Table) VisualLength() int { type Text string func (t Text) VisualLength() int { return len(t) } -func (t Text) WriteTo(w io.Writer) error { +func (t Text) Write(w io.Writer) error { _, err := w.Write([]byte(t)) return err } @@ -136,9 +136,9 @@ type indented struct { } func (i *indented) VisualLength() int { return i.Content.VisualLength() } -func (i *indented) WriteTo(w io.Writer) error { +func (i *indented) Write(w io.Writer) error { var out bytes.Buffer - if err := i.Content.WriteTo(&out); err != nil { + if err := i.Content.Write(&out); err != nil { return err } @@ -185,7 +185,7 @@ func (f *fromWriter) VisualLength() int { } return len(f.cache) } -func (f *fromWriter) WriteTo(w io.Writer) error { +func (f *fromWriter) Write(w io.Writer) error { if f.cache != nil { if f.cacheError != nil { return f.cacheError @@ -219,7 +219,7 @@ type decorated struct { } func (d *decorated) VisualLength() int { return d.Contents.VisualLength() } -func (d *decorated) WriteTo(w io.Writer) error { +func (d *decorated) Write(w io.Writer) error { oldOut := color.Output color.Output = w defer func() { color.Output = oldOut }() @@ -227,7 +227,7 @@ func (d *decorated) WriteTo(w io.Writer) error { d.Attributes.Set() defer color.Unset() - return d.Contents.WriteTo(w) + return d.Contents.Write(w) } // SpanWriter is a span that contains multiple sub-spans. @@ -242,9 +242,9 @@ func (m *SpanWriter) VisualLength() int { } return res } -func (m *SpanWriter) WriteTo(w io.Writer) error { +func (m *SpanWriter) Write(w io.Writer) error { for _, span := range m.contents { - if err := span.WriteTo(w); err != nil { + if err := span.Write(w); err != nil { return err } } @@ -268,12 +268,12 @@ func (l *lines) VisualLength() int { } return l.content.VisualLength() } -func (l *lines) WriteTo(w io.Writer) error { +func (l *lines) Write(w io.Writer) error { if err := writePadding(w, linesPadding, l.amountBefore); err != nil { return err } if l.content != nil { - if err := l.content.WriteTo(w); err != nil { + if err := l.content.Write(w); err != nil { return err } }