From a191b34390c3aa196aaab50babd1a8ea41b4a33e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Bustarret?= Date: Fri, 10 Jul 2026 13:22:37 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20fix(kube):=20add=20missing?= =?UTF-8?q?=20flags=20in=20cluster=20kubeconfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/config/generate/kube/defaults.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/config/generate/kube/defaults.yaml b/pkg/config/generate/kube/defaults.yaml index 64aa5320..6911d6f0 100644 --- a/pkg/config/generate/kube/defaults.yaml +++ b/pkg/config/generate/kube/defaults.yaml @@ -279,6 +279,13 @@ aliases: - '%0' - --output - text + flags: + - name: group + alias_to: Group + - name: user + alias_to: User + - name: ttl + alias_to: Ttl - entity: quota use: describe aliases: From 297bb58378ef8ba6e774ddcb56f4aad6ba269244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Bustarret?= Date: Fri, 10 Jul 2026 13:36:48 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=9A=B8=20ux(kube):=20use=20id=5For=5F?= =?UTF-8?q?name=20as=20primary=20field?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/reference/octl_kube_cluster.md | 8 +-- docs/reference/octl_kube_cluster_delete.md | 6 +- docs/reference/octl_kube_cluster_describe.md | 6 +- .../reference/octl_kube_cluster_kubeconfig.md | 11 ++-- docs/reference/octl_kube_cluster_update.md | 6 +- docs/reference/octl_kube_project.md | 14 ++--- docs/reference/octl_kube_project_clusters.md | 2 +- docs/reference/octl_kube_project_delete.md | 6 +- docs/reference/octl_kube_project_describe.md | 6 +- docs/reference/octl_kube_project_nets.md | 6 +- .../reference/octl_kube_project_public-ips.md | 6 +- docs/reference/octl_kube_project_quotas.md | 6 +- docs/reference/octl_kube_project_snapshots.md | 6 +- docs/reference/octl_kube_project_update.md | 6 +- docs/reference/octl_kube_publicip.md | 2 +- docs/reference/octl_kube_publicip_describe.md | 6 +- pkg/config/defaults.zip | Bin 92787 -> 92800 bytes pkg/config/defaults_kube.yaml | 57 ++++++++++-------- pkg/config/generate/builder/config.go | 2 + pkg/config/generate/builder/method.go | 16 +++-- pkg/config/generate/kube/defaults.yaml | 22 +++---- pkg/config/generate/kube/main.go | 1 + pkg/config/generate/kubeclient/main.go | 1 + 23 files changed, 110 insertions(+), 92 deletions(-) diff --git a/docs/reference/octl_kube_cluster.md b/docs/reference/octl_kube_cluster.md index 08b61361..2ba40c3f 100644 --- a/docs/reference/octl_kube_cluster.md +++ b/docs/reference/octl_kube_cluster.md @@ -35,9 +35,9 @@ cluster commands * [octl kube](octl_kube.md) - OUTSCALE Kubernetes as a Service (OKS) management * [octl kube cluster create](octl_kube_cluster_create.md) - alias for api CreateCluster -* [octl kube cluster delete](octl_kube_cluster_delete.md) - alias for api DeleteCluster id -* [octl kube cluster describe](octl_kube_cluster_describe.md) - alias for api GetCluster id -* [octl kube cluster kubeconfig](octl_kube_cluster_kubeconfig.md) - alias for api GetKubeconfig cluster_name_or_id +* [octl kube cluster delete](octl_kube_cluster_delete.md) - alias for api DeleteCluster id_or_name +* [octl kube cluster describe](octl_kube_cluster_describe.md) - alias for api GetCluster id_or_name +* [octl kube cluster kubeconfig](octl_kube_cluster_kubeconfig.md) - alias for api GetKubeconfig id_or_name * [octl kube cluster list](octl_kube_cluster_list.md) - alias for api ListAllClusters -* [octl kube cluster update](octl_kube_cluster_update.md) - alias for api UpdateCluster id +* [octl kube cluster update](octl_kube_cluster_update.md) - alias for api UpdateCluster id_or_name diff --git a/docs/reference/octl_kube_cluster_delete.md b/docs/reference/octl_kube_cluster_delete.md index 1a800f32..a00e69fb 100644 --- a/docs/reference/octl_kube_cluster_delete.md +++ b/docs/reference/octl_kube_cluster_delete.md @@ -1,15 +1,15 @@ ## octl kube cluster delete -alias for api DeleteCluster id +alias for api DeleteCluster id_or_name ### Synopsis -> *alias for api DeleteCluster id* +> *alias for api DeleteCluster id_or_name* Deletes a specific cluster by its ID. Returns confirmation of the deletion. ``` -octl kube cluster delete id [id]... [flags] +octl kube cluster delete id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_cluster_describe.md b/docs/reference/octl_kube_cluster_describe.md index f999a0b2..77fd908d 100644 --- a/docs/reference/octl_kube_cluster_describe.md +++ b/docs/reference/octl_kube_cluster_describe.md @@ -1,15 +1,15 @@ ## octl kube cluster describe -alias for api GetCluster id +alias for api GetCluster id_or_name ### Synopsis -> *alias for api GetCluster id* +> *alias for api GetCluster id_or_name* ``` -octl kube cluster describe id [id]... [flags] +octl kube cluster describe id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_cluster_kubeconfig.md b/docs/reference/octl_kube_cluster_kubeconfig.md index b71b9dc9..ae6787e8 100644 --- a/docs/reference/octl_kube_cluster_kubeconfig.md +++ b/docs/reference/octl_kube_cluster_kubeconfig.md @@ -1,21 +1,24 @@ ## octl kube cluster kubeconfig -alias for api GetKubeconfig cluster_name_or_id +alias for api GetKubeconfig id_or_name ### Synopsis -> *alias for api GetKubeconfig cluster_name_or_id* +> *alias for api GetKubeconfig id_or_name* ``` -octl kube cluster kubeconfig cluster_name_or_id [flags] +octl kube cluster kubeconfig id_or_name [flags] ``` ### Options ``` - -h, --help help for kubeconfig + --group string + -h, --help help for kubeconfig + --ttl string + --user string ``` ### Options inherited from parent commands diff --git a/docs/reference/octl_kube_cluster_update.md b/docs/reference/octl_kube_cluster_update.md index f0b0fe2f..3971f569 100644 --- a/docs/reference/octl_kube_cluster_update.md +++ b/docs/reference/octl_kube_cluster_update.md @@ -1,15 +1,15 @@ ## octl kube cluster update -alias for api UpdateCluster id +alias for api UpdateCluster id_or_name ### Synopsis -> *alias for api UpdateCluster id* +> *alias for api UpdateCluster id_or_name* Updates the configuration of an existing cluster by its ID. The request must include the updated cluster details in the request body. Returns the updated cluster information ``` -octl kube cluster update id [id]... [flags] +octl kube cluster update id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project.md b/docs/reference/octl_kube_project.md index 5f42c850..82ded485 100644 --- a/docs/reference/octl_kube_project.md +++ b/docs/reference/octl_kube_project.md @@ -35,13 +35,13 @@ project commands * [octl kube](octl_kube.md) - OUTSCALE Kubernetes as a Service (OKS) management * [octl kube project clusters](octl_kube_project_clusters.md) - alias for api ListClustersByProjectID * [octl kube project create](octl_kube_project_create.md) - alias for api CreateProject -* [octl kube project delete](octl_kube_project_delete.md) - alias for api DeleteProject id -* [octl kube project describe](octl_kube_project_describe.md) - alias for api GetProject id +* [octl kube project delete](octl_kube_project_delete.md) - alias for api DeleteProject id_or_name +* [octl kube project describe](octl_kube_project_describe.md) - alias for api GetProject id_or_name * [octl kube project list](octl_kube_project_list.md) - alias for api ListProjects -* [octl kube project nets](octl_kube_project_nets.md) - alias for api GetProjectNets id -* [octl kube project public-ips](octl_kube_project_public-ips.md) - alias for api GetProjectPublicIps id -* [octl kube project quotas](octl_kube_project_quotas.md) - alias for api GetProjectQuotas id -* [octl kube project snapshots](octl_kube_project_snapshots.md) - alias for api GetProjectSnapshots id -* [octl kube project update](octl_kube_project_update.md) - alias for api UpdateProject id +* [octl kube project nets](octl_kube_project_nets.md) - alias for api GetProjectNets id_or_name +* [octl kube project public-ips](octl_kube_project_public-ips.md) - alias for api GetProjectPublicIps id_or_name +* [octl kube project quotas](octl_kube_project_quotas.md) - alias for api GetProjectQuotas id_or_name +* [octl kube project snapshots](octl_kube_project_snapshots.md) - alias for api GetProjectSnapshots id_or_name +* [octl kube project update](octl_kube_project_update.md) - alias for api UpdateProject id_or_name * [octl kube project use](octl_kube_project_use.md) - Set a default project for cluster commands, reset it without args diff --git a/docs/reference/octl_kube_project_clusters.md b/docs/reference/octl_kube_project_clusters.md index be15d000..7c73e501 100644 --- a/docs/reference/octl_kube_project_clusters.md +++ b/docs/reference/octl_kube_project_clusters.md @@ -9,7 +9,7 @@ alias for api ListClustersByProjectID ``` -octl kube project clusters project_id [flags] +octl kube project clusters id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_delete.md b/docs/reference/octl_kube_project_delete.md index 55e1ef45..dfc59f45 100644 --- a/docs/reference/octl_kube_project_delete.md +++ b/docs/reference/octl_kube_project_delete.md @@ -1,15 +1,15 @@ ## octl kube project delete -alias for api DeleteProject id +alias for api DeleteProject id_or_name ### Synopsis -> *alias for api DeleteProject id* +> *alias for api DeleteProject id_or_name* Deletes a specific project by its ID. Returns a confirmation of the project deletion. ``` -octl kube project delete id [id]... [flags] +octl kube project delete id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_describe.md b/docs/reference/octl_kube_project_describe.md index 59ab2778..ff9eac16 100644 --- a/docs/reference/octl_kube_project_describe.md +++ b/docs/reference/octl_kube_project_describe.md @@ -1,15 +1,15 @@ ## octl kube project describe -alias for api GetProject id +alias for api GetProject id_or_name ### Synopsis -> *alias for api GetProject id* +> *alias for api GetProject id_or_name* ``` -octl kube project describe id [id]... [flags] +octl kube project describe id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_nets.md b/docs/reference/octl_kube_project_nets.md index 6a2a5f4c..3dc5359d 100644 --- a/docs/reference/octl_kube_project_nets.md +++ b/docs/reference/octl_kube_project_nets.md @@ -1,15 +1,15 @@ ## octl kube project nets -alias for api GetProjectNets id +alias for api GetProjectNets id_or_name ### Synopsis -> *alias for api GetProjectNets id* +> *alias for api GetProjectNets id_or_name* ``` -octl kube project nets id [flags] +octl kube project nets id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_public-ips.md b/docs/reference/octl_kube_project_public-ips.md index d4618cbd..a3d1d440 100644 --- a/docs/reference/octl_kube_project_public-ips.md +++ b/docs/reference/octl_kube_project_public-ips.md @@ -1,15 +1,15 @@ ## octl kube project public-ips -alias for api GetProjectPublicIps id +alias for api GetProjectPublicIps id_or_name ### Synopsis -> *alias for api GetProjectPublicIps id* +> *alias for api GetProjectPublicIps id_or_name* ``` -octl kube project public-ips id [flags] +octl kube project public-ips id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_quotas.md b/docs/reference/octl_kube_project_quotas.md index 61e859fb..a1923403 100644 --- a/docs/reference/octl_kube_project_quotas.md +++ b/docs/reference/octl_kube_project_quotas.md @@ -1,15 +1,15 @@ ## octl kube project quotas -alias for api GetProjectQuotas id +alias for api GetProjectQuotas id_or_name ### Synopsis -> *alias for api GetProjectQuotas id* +> *alias for api GetProjectQuotas id_or_name* ``` -octl kube project quotas id [flags] +octl kube project quotas id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_snapshots.md b/docs/reference/octl_kube_project_snapshots.md index ed05d5da..b87daf63 100644 --- a/docs/reference/octl_kube_project_snapshots.md +++ b/docs/reference/octl_kube_project_snapshots.md @@ -1,15 +1,15 @@ ## octl kube project snapshots -alias for api GetProjectSnapshots id +alias for api GetProjectSnapshots id_or_name ### Synopsis -> *alias for api GetProjectSnapshots id* +> *alias for api GetProjectSnapshots id_or_name* ``` -octl kube project snapshots id [flags] +octl kube project snapshots id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_update.md b/docs/reference/octl_kube_project_update.md index c9304ed6..e2071649 100644 --- a/docs/reference/octl_kube_project_update.md +++ b/docs/reference/octl_kube_project_update.md @@ -1,15 +1,15 @@ ## octl kube project update -alias for api UpdateProject id +alias for api UpdateProject id_or_name ### Synopsis -> *alias for api UpdateProject id* +> *alias for api UpdateProject id_or_name* Updates the details of an existing project by its ID. The request must include the updated project data in the request body. Returns the updated project information. ``` -octl kube project update id [id]... [flags] +octl kube project update id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_publicip.md b/docs/reference/octl_kube_publicip.md index 8bf9a04e..5988db08 100644 --- a/docs/reference/octl_kube_publicip.md +++ b/docs/reference/octl_kube_publicip.md @@ -33,5 +33,5 @@ publicip commands ### SEE ALSO * [octl kube](octl_kube.md) - OUTSCALE Kubernetes as a Service (OKS) management -* [octl kube publicip describe](octl_kube_publicip_describe.md) - alias for api GetProjectPublicIps public_ip_id +* [octl kube publicip describe](octl_kube_publicip_describe.md) - alias for api GetProjectPublicIps id_or_name diff --git a/docs/reference/octl_kube_publicip_describe.md b/docs/reference/octl_kube_publicip_describe.md index f1febc84..c9c3b098 100644 --- a/docs/reference/octl_kube_publicip_describe.md +++ b/docs/reference/octl_kube_publicip_describe.md @@ -1,15 +1,15 @@ ## octl kube publicip describe -alias for api GetProjectPublicIps public_ip_id +alias for api GetProjectPublicIps id_or_name ### Synopsis -> *alias for api GetProjectPublicIps public_ip_id* +> *alias for api GetProjectPublicIps id_or_name* ``` -octl kube publicip describe public_ip_id [public_ip_id]... [flags] +octl kube publicip describe id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/pkg/config/defaults.zip b/pkg/config/defaults.zip index 26ac607f05945e57f5b3908f801f19e8b5013c5a..e9997e263e883204cfb58a428912108b816290b0 100644 GIT binary patch delta 5860 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 diff --git a/pkg/config/defaults_kube.yaml b/pkg/config/defaults_kube.yaml index 809e6901..46467d11 100644 --- a/pkg/config/defaults_kube.yaml +++ b/pkg/config/defaults_kube.yaml @@ -167,7 +167,7 @@ entities: no_aliases: true aliases: - entity: project - use: clusters project_id + use: clusters id_or_name alias_to: ListClustersByProjectID short: alias for api ListClustersByProjectID command: @@ -225,11 +225,11 @@ aliases: - name: region alias_to: Region - entity: project - use: nets id + use: nets id_or_name alias_to: GetProjectNets aliases: - net - short: alias for api GetProjectNets id + short: alias for api GetProjectNets id_or_name command: - api - GetProjectNets @@ -237,8 +237,8 @@ aliases: - --output - yaml - entity: project - use: quotas id - short: alias for api GetProjectQuotas id + use: quotas id_or_name + short: alias for api GetProjectQuotas id_or_name command: - api - GetProjectQuotas @@ -246,11 +246,11 @@ aliases: - --output - yaml - entity: project - use: public-ips id + use: public-ips id_or_name alias_to: GetProjectPublicIps aliases: - ip - short: alias for api GetProjectPublicIps id + short: alias for api GetProjectPublicIps id_or_name command: - api - GetProjectPublicIps @@ -258,12 +258,12 @@ aliases: - --output - yaml - entity: project - use: snapshots id + use: snapshots id_or_name alias_to: GetProjectSnapshots aliases: - snap - snapshot - short: alias for api GetProjectSnapshots id + short: alias for api GetProjectSnapshots id_or_name command: - api - GetProjectSnapshots @@ -362,15 +362,22 @@ aliases: - name: version alias_to: Version - entity: cluster - use: kubeconfig cluster_name_or_id + use: kubeconfig id_or_name alias_to: GetKubeconfig - short: alias for api GetKubeconfig cluster_name_or_id + short: alias for api GetKubeconfig id_or_name command: - api - GetKubeconfig - '%0' - --output - text + flags: + - name: group + alias_to: Group + - name: user + alias_to: User + - name: ttl + alias_to: Ttl - entity: quota use: describe aliases: @@ -383,10 +390,10 @@ aliases: - yaml - --single - entity: cluster - use: describe id [id]... + use: describe id_or_name [id_or_name]... aliases: - desc - short: alias for api GetCluster id + short: alias for api GetCluster id_or_name command: - api - GetCluster @@ -395,10 +402,10 @@ aliases: - yaml - --single - entity: project - use: describe id [id]... + use: describe id_or_name [id_or_name]... aliases: - desc - short: alias for api GetProject id + short: alias for api GetProject id_or_name command: - api - GetProject @@ -407,10 +414,10 @@ aliases: - yaml - --single - entity: publicip - use: describe public_ip_id [public_ip_id]... + use: describe id_or_name [id_or_name]... aliases: - desc - short: alias for api GetProjectPublicIps public_ip_id + short: alias for api GetProjectPublicIps id_or_name command: - api - GetProjectPublicIps @@ -471,12 +478,12 @@ aliases: - name: limit alias_to: Limit - entity: cluster - use: delete id [id]... + use: delete id_or_name [id_or_name]... alias_to: DeleteCluster aliases: - del - rm - short: alias for api DeleteCluster id + short: alias for api DeleteCluster id_or_name command: - api - DeleteCluster @@ -493,12 +500,12 @@ aliases: - table - --single - entity: project - use: delete id [id]... + use: delete id_or_name [id_or_name]... alias_to: DeleteProject aliases: - del - rm - short: alias for api DeleteProject id + short: alias for api DeleteProject id_or_name command: - api - DeleteProject @@ -515,9 +522,9 @@ aliases: - table - --single - entity: cluster - use: update id [id]... + use: update id_or_name [id_or_name]... alias_to: UpdateCluster - short: alias for api UpdateCluster id + short: alias for api UpdateCluster id_or_name command: - api - UpdateCluster @@ -588,9 +595,9 @@ aliases: - name: version alias_to: Version - entity: project - use: update id [id]... + use: update id_or_name [id_or_name]... alias_to: UpdateProject - short: alias for api UpdateProject id + short: alias for api UpdateProject id_or_name command: - api - UpdateProject diff --git a/pkg/config/generate/builder/config.go b/pkg/config/generate/builder/config.go index 8ec2a061..6e9942fe 100644 --- a/pkg/config/generate/builder/config.go +++ b/pkg/config/generate/builder/config.go @@ -24,5 +24,7 @@ type Config struct { RequiredFromFieldPointer bool RequiredFromComment func(string) bool + IdFieldInUsage string + AliasRootPath []string } diff --git a/pkg/config/generate/builder/method.go b/pkg/config/generate/builder/method.go index 81309eec..377b989c 100644 --- a/pkg/config/generate/builder/method.go +++ b/pkg/config/generate/builder/method.go @@ -340,10 +340,7 @@ func (b *MethodBuilder) buildReadAliases() error { return nil } fmt.Println("describe", b.typeName, "idFilter", idFilter) - id := lo.SnakeCase(b.entity.Primary) - if id == "" { - id = "id" - } + id := b.idFieldInUsage() cmd := []string{ "api", b.m.Name, @@ -421,7 +418,7 @@ func (b *MethodBuilder) buildUpdateAlias(verb string) error { flags = b.buildFlags(req, b.cfg.UpdateFlagPrefixes, []string{idField}) } fmt.Println(verb, b.typeName, "idField", idField, "flags", flags.Names()) - id := lo.SnakeCase(b.entity.Primary) + id := b.idFieldInUsage() cmd := []string{ "api", b.m.Name, @@ -462,6 +459,13 @@ func (b *MethodBuilder) guessIDFilter() (string, error) { return fids.Name, nil } +func (b *MethodBuilder) idFieldInUsage() string { + if b.cfg.IdFieldInUsage != "" { + return b.cfg.IdFieldInUsage + } + return lo.SnakeCase(b.entity.Primary) +} + func (b *MethodBuilder) buildDeleteAlias() error { if b.entity.NoAliases { fmt.Println("-> no alias") @@ -503,7 +507,7 @@ func (b *MethodBuilder) buildDeleteAlias() error { }) } } - id := lo.SnakeCase(b.entity.Primary) + id := b.idFieldInUsage() cmd := []string{ "api", b.m.Name, diff --git a/pkg/config/generate/kube/defaults.yaml b/pkg/config/generate/kube/defaults.yaml index 6911d6f0..a6921c73 100644 --- a/pkg/config/generate/kube/defaults.yaml +++ b/pkg/config/generate/kube/defaults.yaml @@ -75,7 +75,7 @@ contents: group: Clusters aliases: - entity: project - use: clusters project_id + use: clusters id_or_name alias_to: ListClustersByProjectID short: alias for api ListClustersByProjectID command: @@ -133,10 +133,10 @@ aliases: - name: region alias_to: Region - entity: project - use: nets id + use: nets id_or_name aliases: - net - short: alias for api GetProjectNets id + short: alias for api GetProjectNets id_or_name alias_to: GetProjectNets command: - api @@ -145,8 +145,8 @@ aliases: - --output - yaml - entity: project - use: quotas id - short: alias for api GetProjectQuotas id + use: quotas id_or_name + short: alias for api GetProjectQuotas id_or_name command: - api - GetProjectQuotas @@ -154,10 +154,10 @@ aliases: - --output - yaml - entity: project - use: public-ips id + use: public-ips id_or_name aliases: - ip - short: alias for api GetProjectPublicIps id + short: alias for api GetProjectPublicIps id_or_name alias_to: GetProjectPublicIps command: - api @@ -166,11 +166,11 @@ aliases: - --output - yaml - entity: project - use: snapshots id + use: snapshots id_or_name aliases: - snap - snapshot - short: alias for api GetProjectSnapshots id + short: alias for api GetProjectSnapshots id_or_name alias_to: GetProjectSnapshots command: - api @@ -270,8 +270,8 @@ aliases: - name: version alias_to: Version - entity: cluster - use: kubeconfig cluster_name_or_id - short: alias for api GetKubeconfig cluster_name_or_id + use: kubeconfig id_or_name + short: alias for api GetKubeconfig id_or_name alias_to: GetKubeconfig command: - api diff --git a/pkg/config/generate/kube/main.go b/pkg/config/generate/kube/main.go index 3bdcfafa..cdc7ce9d 100644 --- a/pkg/config/generate/kube/main.go +++ b/pkg/config/generate/kube/main.go @@ -50,6 +50,7 @@ func main() { Usage: "Tags (key=value,key=value)", }, }, + IdFieldInUsage: "id_or_name", } sb := builder.NewSpecBuilder(cfg) diff --git a/pkg/config/generate/kubeclient/main.go b/pkg/config/generate/kubeclient/main.go index 0c8b3767..bf0d15c8 100644 --- a/pkg/config/generate/kubeclient/main.go +++ b/pkg/config/generate/kubeclient/main.go @@ -41,6 +41,7 @@ func main() { cfg := builder.Config{ RequiredFromFieldPointer: true, + IdFieldInUsage: "id_or_name", } sb := builder.NewSpecBuilder(cfg)