From c52f52245d310fdb854eb44ca9b069849d92f423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozren=20Dabi=C4=87?= Date: Sat, 7 Feb 2026 21:57:36 +0100 Subject: [PATCH] fix: Disable `--group-by` flag for `exporter` only --- cmd/kor/all.go | 3 ++- cmd/kor/clusterrolebindings.go | 1 + cmd/kor/clusterroles.go | 1 + cmd/kor/configmaps.go | 1 + cmd/kor/crds.go | 1 + cmd/kor/daemonsets.go | 1 + cmd/kor/deployments.go | 1 + cmd/kor/exporter.go | 4 ++-- cmd/kor/finalizers.go | 1 + cmd/kor/hpas.go | 1 + cmd/kor/ingresses.go | 1 + cmd/kor/jobs.go | 1 + cmd/kor/networkpolicies.go | 1 + cmd/kor/pdbs.go | 1 + cmd/kor/pods.go | 1 + cmd/kor/priorityclasses.go | 1 + cmd/kor/pv.go | 1 + cmd/kor/pvc.go | 1 + cmd/kor/replicasets.go | 1 + cmd/kor/rolebindings.go | 1 + cmd/kor/roles.go | 1 + cmd/kor/root.go | 14 +++++++++++++- cmd/kor/secrets.go | 1 + cmd/kor/serviceaccounts.go | 1 + cmd/kor/services.go | 1 + cmd/kor/statefulsets.go | 1 + cmd/kor/storageclasses.go | 1 + cmd/kor/volumeattachments.go | 1 + 28 files changed, 42 insertions(+), 4 deletions(-) diff --git a/cmd/kor/all.go b/cmd/kor/all.go index d8bfd4a7..a6d982c7 100644 --- a/cmd/kor/all.go +++ b/cmd/kor/all.go @@ -29,6 +29,7 @@ var allCmd = &cobra.Command{ } func init() { - allCmd.Flags().BoolVar(&opts.Namespaced, "namespaced", true, "If false, non-namespaced resources will be returned, otherwise returning namespaced resources by default. If not used, both are returned") + addGroupByFlag(allCmd) + addNamespacedFlag(allCmd) rootCmd.AddCommand(allCmd) } diff --git a/cmd/kor/clusterrolebindings.go b/cmd/kor/clusterrolebindings.go index 0fb9c978..de9f21af 100644 --- a/cmd/kor/clusterrolebindings.go +++ b/cmd/kor/clusterrolebindings.go @@ -27,5 +27,6 @@ var clusterRoleBindingCmd = &cobra.Command{ } func init() { + addGroupByFlag(clusterRoleBindingCmd) rootCmd.AddCommand(clusterRoleBindingCmd) } diff --git a/cmd/kor/clusterroles.go b/cmd/kor/clusterroles.go index 3eca16fb..2237ddff 100644 --- a/cmd/kor/clusterroles.go +++ b/cmd/kor/clusterroles.go @@ -27,5 +27,6 @@ var clusterRoleCmd = &cobra.Command{ } func init() { + addGroupByFlag(clusterRoleCmd) rootCmd.AddCommand(clusterRoleCmd) } diff --git a/cmd/kor/configmaps.go b/cmd/kor/configmaps.go index 161b2a61..2b9aee22 100644 --- a/cmd/kor/configmaps.go +++ b/cmd/kor/configmaps.go @@ -26,5 +26,6 @@ var configmapCmd = &cobra.Command{ } func init() { + addGroupByFlag(configmapCmd) rootCmd.AddCommand(configmapCmd) } diff --git a/cmd/kor/crds.go b/cmd/kor/crds.go index eebd98f3..4c684792 100644 --- a/cmd/kor/crds.go +++ b/cmd/kor/crds.go @@ -28,5 +28,6 @@ var crdCmd = &cobra.Command{ } func init() { + addGroupByFlag(crdCmd) rootCmd.AddCommand(crdCmd) } diff --git a/cmd/kor/daemonsets.go b/cmd/kor/daemonsets.go index 374934e9..b9b6067d 100644 --- a/cmd/kor/daemonsets.go +++ b/cmd/kor/daemonsets.go @@ -27,5 +27,6 @@ var dsCmd = &cobra.Command{ } func init() { + addGroupByFlag(dsCmd) rootCmd.AddCommand(dsCmd) } diff --git a/cmd/kor/deployments.go b/cmd/kor/deployments.go index 4eb16d6d..d7f8801f 100644 --- a/cmd/kor/deployments.go +++ b/cmd/kor/deployments.go @@ -26,5 +26,6 @@ var deployCmd = &cobra.Command{ } func init() { + addGroupByFlag(deployCmd) rootCmd.AddCommand(deployCmd) } diff --git a/cmd/kor/exporter.go b/cmd/kor/exporter.go index 50abe390..43f7b3d5 100644 --- a/cmd/kor/exporter.go +++ b/cmd/kor/exporter.go @@ -23,7 +23,7 @@ var exporterCmd = &cobra.Command{ } func init() { - exporterCmd.Flags().StringSliceVarP(&resourceList, "resources", "r", nil, "Comma-separated list of resources to monitor (e.g., deployment,service)") - exporterCmd.Flags().BoolVar(&opts.Namespaced, "namespaced", true, "If false, non-namespaced resources will be returned, otherwise returning namespaced resources by default. If not used, both are returned") + addNamespacedFlag(exporterCmd) + addResourcesFlag(exporterCmd) rootCmd.AddCommand(exporterCmd) } diff --git a/cmd/kor/finalizers.go b/cmd/kor/finalizers.go index 08a8acd8..f8a5f68a 100644 --- a/cmd/kor/finalizers.go +++ b/cmd/kor/finalizers.go @@ -26,5 +26,6 @@ var finalizerCmd = &cobra.Command{ } func init() { + addGroupByFlag(finalizerCmd) rootCmd.AddCommand(finalizerCmd) } diff --git a/cmd/kor/hpas.go b/cmd/kor/hpas.go index 2679637e..004986d9 100644 --- a/cmd/kor/hpas.go +++ b/cmd/kor/hpas.go @@ -28,5 +28,6 @@ var hpaCmd = &cobra.Command{ } func init() { + addGroupByFlag(hpaCmd) rootCmd.AddCommand(hpaCmd) } diff --git a/cmd/kor/ingresses.go b/cmd/kor/ingresses.go index 9ec5c91b..403a9a3a 100644 --- a/cmd/kor/ingresses.go +++ b/cmd/kor/ingresses.go @@ -27,5 +27,6 @@ var ingressCmd = &cobra.Command{ } func init() { + addGroupByFlag(ingressCmd) rootCmd.AddCommand(ingressCmd) } diff --git a/cmd/kor/jobs.go b/cmd/kor/jobs.go index 16034eb8..afaef261 100644 --- a/cmd/kor/jobs.go +++ b/cmd/kor/jobs.go @@ -27,5 +27,6 @@ var jobCmd = &cobra.Command{ } func init() { + addGroupByFlag(jobCmd) rootCmd.AddCommand(jobCmd) } diff --git a/cmd/kor/networkpolicies.go b/cmd/kor/networkpolicies.go index cb0efea4..0c0b6ee3 100644 --- a/cmd/kor/networkpolicies.go +++ b/cmd/kor/networkpolicies.go @@ -26,5 +26,6 @@ var netpolCmd = &cobra.Command{ } func init() { + addGroupByFlag(netpolCmd) rootCmd.AddCommand(netpolCmd) } diff --git a/cmd/kor/pdbs.go b/cmd/kor/pdbs.go index 6fecadee..6d1c8a4b 100644 --- a/cmd/kor/pdbs.go +++ b/cmd/kor/pdbs.go @@ -27,5 +27,6 @@ var pdbCmd = &cobra.Command{ } func init() { + addGroupByFlag(pdbCmd) rootCmd.AddCommand(pdbCmd) } diff --git a/cmd/kor/pods.go b/cmd/kor/pods.go index 9c13c036..710a33bc 100644 --- a/cmd/kor/pods.go +++ b/cmd/kor/pods.go @@ -27,5 +27,6 @@ var podCmd = &cobra.Command{ } func init() { + addGroupByFlag(podCmd) rootCmd.AddCommand(podCmd) } diff --git a/cmd/kor/priorityclasses.go b/cmd/kor/priorityclasses.go index 1cadc6ff..314ac16a 100644 --- a/cmd/kor/priorityclasses.go +++ b/cmd/kor/priorityclasses.go @@ -28,5 +28,6 @@ var priorityClassCmd = &cobra.Command{ } func init() { + addGroupByFlag(priorityClassCmd) rootCmd.AddCommand(priorityClassCmd) } diff --git a/cmd/kor/pv.go b/cmd/kor/pv.go index dcfc6692..796b666e 100644 --- a/cmd/kor/pv.go +++ b/cmd/kor/pv.go @@ -28,5 +28,6 @@ var pvCmd = &cobra.Command{ } func init() { + addGroupByFlag(pvCmd) rootCmd.AddCommand(pvCmd) } diff --git a/cmd/kor/pvc.go b/cmd/kor/pvc.go index e29f9c61..2d2aee27 100644 --- a/cmd/kor/pvc.go +++ b/cmd/kor/pvc.go @@ -28,5 +28,6 @@ var pvcCmd = &cobra.Command{ } func init() { + addGroupByFlag(pvcCmd) rootCmd.AddCommand(pvcCmd) } diff --git a/cmd/kor/replicasets.go b/cmd/kor/replicasets.go index f12e8dff..5ddb51ef 100644 --- a/cmd/kor/replicasets.go +++ b/cmd/kor/replicasets.go @@ -27,5 +27,6 @@ var replicaSetCmd = &cobra.Command{ } func init() { + addGroupByFlag(replicaSetCmd) rootCmd.AddCommand(replicaSetCmd) } diff --git a/cmd/kor/rolebindings.go b/cmd/kor/rolebindings.go index 5b471450..baac3cb4 100644 --- a/cmd/kor/rolebindings.go +++ b/cmd/kor/rolebindings.go @@ -27,5 +27,6 @@ var roleBindingCmd = &cobra.Command{ } func init() { + addGroupByFlag(roleBindingCmd) rootCmd.AddCommand(roleBindingCmd) } diff --git a/cmd/kor/roles.go b/cmd/kor/roles.go index 2f71739b..67bc8e63 100644 --- a/cmd/kor/roles.go +++ b/cmd/kor/roles.go @@ -27,5 +27,6 @@ var roleCmd = &cobra.Command{ } func init() { + addGroupByFlag(roleCmd) rootCmd.AddCommand(roleCmd) } diff --git a/cmd/kor/root.go b/cmd/kor/root.go index 969a037e..badaf08c 100644 --- a/cmd/kor/root.go +++ b/cmd/kor/root.go @@ -64,6 +64,7 @@ func init() { initFlags() initViper() addFilterOptionsFlag(rootCmd, filterOptions) + addGroupByFlag(rootCmd) } func initKindsList() { @@ -83,7 +84,6 @@ func initFlags() { rootCmd.PersistentFlags().BoolVar(&opts.DeleteFlag, "delete", false, "Delete unused resources") rootCmd.PersistentFlags().BoolVar(&opts.NoInteractive, "no-interactive", false, "Do not prompt for confirmation when deleting resources. Be careful when using this flag!") rootCmd.PersistentFlags().BoolVarP(&opts.Verbose, "verbose", "v", false, "Verbose output (print empty namespaces)") - rootCmd.PersistentFlags().StringVar(&opts.GroupBy, "group-by", "namespace", "Group output by (namespace, resource)") rootCmd.PersistentFlags().BoolVar(&opts.ShowReason, "show-reason", false, "Print reason resource is considered unused") } @@ -125,6 +125,18 @@ func Execute() { } } +func addGroupByFlag(cmd *cobra.Command) { + cmd.Flags().StringVar(&opts.GroupBy, "group-by", "namespace", "Group output by (namespace, resource)") +} + +func addNamespacedFlag(cmd *cobra.Command) { + cmd.Flags().BoolVar(&opts.Namespaced, "namespaced", true, "If false, non-namespaced resources will be returned, otherwise returning namespaced resources by default. If not used, both are returned") +} + +func addResourcesFlag(cmd *cobra.Command) { + cmd.Flags().StringSliceVarP(&resourceList, "resources", "r", nil, "Comma-separated list of resources to monitor (e.g., deployment,service)") +} + func addFilterOptionsFlag(cmd *cobra.Command, opts *filters.Options) { cmd.PersistentFlags().StringSliceVarP(&opts.ExcludeLabels, "exclude-labels", "l", opts.ExcludeLabels, "Selector to filter out, Example: --exclude-labels key1=value1,key2=value2. If --include-labels is set, --exclude-labels will be ignored") cmd.PersistentFlags().StringVar(&opts.NewerThan, "newer-than", opts.NewerThan, "The maximum age of the resources to be considered unused. This flag cannot be used together with older-than flag. Example: --newer-than=1h2m") diff --git a/cmd/kor/secrets.go b/cmd/kor/secrets.go index b484d4af..4d87e243 100644 --- a/cmd/kor/secrets.go +++ b/cmd/kor/secrets.go @@ -27,5 +27,6 @@ var secretCmd = &cobra.Command{ } func init() { + addGroupByFlag(secretCmd) rootCmd.AddCommand(secretCmd) } diff --git a/cmd/kor/serviceaccounts.go b/cmd/kor/serviceaccounts.go index ba73b462..baab50e3 100644 --- a/cmd/kor/serviceaccounts.go +++ b/cmd/kor/serviceaccounts.go @@ -27,5 +27,6 @@ var serviceAccountCmd = &cobra.Command{ } func init() { + addGroupByFlag(serviceAccountCmd) rootCmd.AddCommand(serviceAccountCmd) } diff --git a/cmd/kor/services.go b/cmd/kor/services.go index 996ca611..e6e39500 100644 --- a/cmd/kor/services.go +++ b/cmd/kor/services.go @@ -27,5 +27,6 @@ var serviceCmd = &cobra.Command{ } func init() { + addGroupByFlag(serviceCmd) rootCmd.AddCommand(serviceCmd) } diff --git a/cmd/kor/statefulsets.go b/cmd/kor/statefulsets.go index dd53e17e..ca62a4f3 100644 --- a/cmd/kor/statefulsets.go +++ b/cmd/kor/statefulsets.go @@ -27,5 +27,6 @@ var stsCmd = &cobra.Command{ } func init() { + addGroupByFlag(stsCmd) rootCmd.AddCommand(stsCmd) } diff --git a/cmd/kor/storageclasses.go b/cmd/kor/storageclasses.go index eade9e03..7588ce2a 100644 --- a/cmd/kor/storageclasses.go +++ b/cmd/kor/storageclasses.go @@ -28,5 +28,6 @@ var scCmd = &cobra.Command{ } func init() { + addGroupByFlag(scCmd) rootCmd.AddCommand(scCmd) } diff --git a/cmd/kor/volumeattachments.go b/cmd/kor/volumeattachments.go index 899e1e76..cab89ce0 100644 --- a/cmd/kor/volumeattachments.go +++ b/cmd/kor/volumeattachments.go @@ -27,5 +27,6 @@ var volumeAttachmentCmd = &cobra.Command{ } func init() { + addGroupByFlag(volumeAttachmentCmd) rootCmd.AddCommand(volumeAttachmentCmd) }