Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kubectl-tree for openSUSE:Factory checked in at 2026-03-25 21:19:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kubectl-tree (Old) and /work/SRC/openSUSE:Factory/.kubectl-tree.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kubectl-tree" Wed Mar 25 21:19:11 2026 rev:4 rq:1342367 version:0.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kubectl-tree/kubectl-tree.changes 2026-03-22 14:13:44.673147607 +0100 +++ /work/SRC/openSUSE:Factory/.kubectl-tree.new.8177/kubectl-tree.changes 2026-03-27 06:42:38.872987984 +0100 @@ -1,0 +2,9 @@ +Wed Mar 25 06:02:48 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.6.0: + * Release v0.6.0 + * feat: filter resources (#115) + * chore(deps): bump github.com/fatih/color from 1.15.0 to 1.19.0 + * chore(deps): bump the kubernetes group with 3 updates + +------------------------------------------------------------------- Old: ---- kubectl-tree-0.5.0.obscpio New: ---- kubectl-tree-0.6.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kubectl-tree.spec ++++++ --- /var/tmp/diff_new_pack.KEoI8q/_old 2026-03-27 06:42:41.289087808 +0100 +++ /var/tmp/diff_new_pack.KEoI8q/_new 2026-03-27 06:42:41.305088468 +0100 @@ -17,7 +17,7 @@ Name: kubectl-tree -Version: 0.5.0 +Version: 0.6.0 Release: 0 Summary: Kubectl plugin to browse Kubernetes object hierarchies as a tree License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.KEoI8q/_old 2026-03-27 06:42:41.577099708 +0100 +++ /var/tmp/diff_new_pack.KEoI8q/_new 2026-03-27 06:42:41.609101030 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/ahmetb/kubectl-tree</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.5.0</param> + <param name="revision">v0.6.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.KEoI8q/_old 2026-03-27 06:42:41.789108467 +0100 +++ /var/tmp/diff_new_pack.KEoI8q/_new 2026-03-27 06:42:41.837110451 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/ahmetb/kubectl-tree</param> - <param name="changesrevision">44b784104c46a1ebd3c9a2f990106c2790de7708</param></service></servicedata> + <param name="changesrevision">07c5f1241c0af99171cd3d3ff5ec0f109f37058f</param></service></servicedata> (No newline at EOF) ++++++ kubectl-tree-0.5.0.obscpio -> kubectl-tree-0.6.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubectl-tree-0.5.0/README.md new/kubectl-tree-0.6.0/README.md --- old/kubectl-tree-0.5.0/README.md 2026-03-20 17:37:25.000000000 +0100 +++ new/kubectl-tree-0.6.0/README.md 2026-03-24 22:28:54.000000000 +0100 @@ -36,11 +36,15 @@ ## Flags -By default, the plugin will only search "namespaced" objects in the same -namespace as the specified object. +By default, the plugin searches only namespaced objects in the same namespace +as the specified object. - `-A`, `--all-namespaces`: Search namespaced and non-namespaced objects in all namespaces. +- `-n`, `--namespace`: Namespace scope for the CLI request. + +- `-c`, `--color`: Control color output. Supported values are `always`, `never`, and `auto` (default). + - `-l`, `--selector`: Selector (label query) to filter on. Supports equality (`=`, `==`, `!=`), set-based (`in`, `notin`), and existence operators. Examples: - `-l key1=value1,key2=value2` (equality) - `-l "env in (prod,staging)"` (set-based) @@ -48,7 +52,21 @@ This helps reduce workload and data volume when working with large clusters. -- `--condition-types`: Comma-separated list of condition types to check (default: Ready). Example: `Ready,Processed,Scheduled`. +- `--condition-types`: Comma-separated list of condition types to check. Default: `Ready`. Example: `Ready,Processed,Scheduled`. + +- `--api-groups`: Comma-separated list of API groups to include in the query. When not set, all API groups are included. Supports globs. Example: `--api-groups=core,*cluster.x-k8s.io,!addons.*,*.cert-manager.io`. + +- `--resources`: Comma-separated list of resource types to include in the query. When not set, all resources are included. Supports globs. Example: `--resources=deployments,rs,pods`. + + Resource filters accept kind, singular, plural, and short names. For example, `ReplicaSets`, `replicasets`, `replicaset`, and `rs` all match the same resource type. + +Using `--resources` and `--api-groups` to define what APIs and resources are included or excluded while building the tree can significantly reduce workload and data usage in large clusters. +If an intermediate owner resource is filtered out, traversal stops at that point and child resources below it will be missing, even if the leaf resource or API would otherwise match. +For example, using `--resources=deployments,pods` will return nothing because `replicasets` are not included and `pods` are not directly owned by `deployments`. + +```sh +kubectl tree --api-groups '*.custom.api,*cluster.x-k8s.io' --resources '!customresource' cluster my-cluster +``` ## Author diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubectl-tree-0.5.0/cmd/kubectl-tree/apis.go new/kubectl-tree-0.6.0/cmd/kubectl-tree/apis.go --- old/kubectl-tree-0.5.0/cmd/kubectl-tree/apis.go 2026-03-20 17:37:25.000000000 +0100 +++ new/kubectl-tree-0.6.0/cmd/kubectl-tree/apis.go 2026-03-24 22:28:54.000000000 +0100 @@ -2,6 +2,7 @@ import ( "fmt" + "path/filepath" "slices" "strings" "time" @@ -43,7 +44,75 @@ return strings.Join([]string{sgv.Resource, sgv.Version, sgv.Group}, ".") } -func findAPIs(client discovery.DiscoveryInterface, apiGroups []string) (*resourceMap, error) { +func matchAny(patterns []string, match func(string) (bool, error)) bool { + if len(patterns) == 0 { + return true + } + + var hasPositive, matchedPositive bool + + for _, p := range patterns { + negated := strings.HasPrefix(p, "!") + if negated { + p = p[1:] + } else { + hasPositive = true + } + + ok, err := match(p) + if err != nil { + klog.V(1).Infof("%s is an invalid pattern: %v", p, err) + continue + } + if negated && ok { + // if a netagive expression is matched we return immediately + return false + } + if !negated && ok { + // if a positive expression is matched, + // we take note of it but continue the loop, in case there are any netagive expressions that would match + matchedPositive = true + } + } + + // if there are only negatives, allow by default unless a negative matched earlier + // if there are positives, require at least one positive match + return !hasPositive || matchedPositive +} + +func matchGroups(patterns []string, g string) bool { + return matchAny(patterns, func(pattern string) (bool, error) { + if pattern == "core" || pattern == "" { + return g == "", nil + } + + return filepath.Match(pattern, g) + }) +} + +func matchResources(patterns []string, apiRes metav1.APIResource) bool { + if apiRes.SingularName == "" { + apiRes.SingularName = strings.ToLower(apiRes.Kind) + } + names := []string{apiRes.Name, apiRes.SingularName, apiRes.Kind} + names = append(names, apiRes.ShortNames...) + + return matchAny(patterns, func(pattern string) (bool, error) { + for _, name := range names { + ok, err := filepath.Match(pattern, name) + if err != nil { + return false, err + } + if ok { + return true, nil + } + } + + return false, nil + }) +} + +func findAPIs(client discovery.DiscoveryInterface, apiGroups, resources []string) (*resourceMap, error) { start := time.Now() resList, err := client.ServerPreferredResources() if err != nil { @@ -61,16 +130,9 @@ return nil, fmt.Errorf("%q cannot be parsed into groupversion: %w", group.GroupVersion, err) } - if len(apiGroups) != 0 { - if !slices.ContainsFunc(apiGroups, func(g string) bool { - if g == "core" || g == "" { - return gv.Group == "" - } - return gv.Group == g - }) { - klog.V(5).Infof("ignoring group %s/%s (%d apis)", group.GroupVersion, group.APIVersion, len(group.APIResources)) - continue - } + if !matchGroups(apiGroups, gv.Group) { + klog.V(5).Infof("ignoring group %s/%s (%d apis)", group.GroupVersion, group.APIVersion, len(group.APIResources)) + continue } klog.V(5).Infof("iterating over group %s/%s (%d apis)", group.GroupVersion, group.APIVersion, len(group.APIResources)) @@ -80,6 +142,12 @@ klog.V(4).Infof(" api (%s) doesn't have required verb, skipping: %v", apiRes.Name, apiRes.Verbs) continue } + // NOTE: if a intermediate owner is excluded that will break the chain, even if the leaf is included + // for example --resources=deployments,pods will return nothing because replicasets are not included + if !matchResources(resources, apiRes) { + klog.V(5).Infof(" api (%s) doesn't match any resource pattern, skipping: %v", apiRes.Name, apiRes.Verbs) + continue + } v := apiResource{ gv: gv, r: apiRes, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubectl-tree-0.5.0/cmd/kubectl-tree/apis_test.go new/kubectl-tree-0.6.0/cmd/kubectl-tree/apis_test.go --- old/kubectl-tree-0.5.0/cmd/kubectl-tree/apis_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/kubectl-tree-0.6.0/cmd/kubectl-tree/apis_test.go 2026-03-24 22:28:54.000000000 +0100 @@ -0,0 +1,63 @@ +package main + +import ( + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func TestMatchGroups(t *testing.T) { + tests := []struct { + name string + patterns []string + value string + want bool + }{ + {name: "empty patterns", value: "apps", want: true}, + {name: "positive match", patterns: []string{"apps"}, value: "apps", want: true}, + {name: "positive glob match", patterns: []string{"app*"}, value: "apps", want: true}, + {name: "positive glob miss", patterns: []string{"app*"}, value: "batch", want: false}, + {name: "positive miss", patterns: []string{"apps"}, value: "batch", want: false}, + {name: "negative match excluded", patterns: []string{"!batch"}, value: "batch", want: false}, + {name: "negative miss included", patterns: []string{"!batch"}, value: "apps", want: true}, + {name: "positive and negative", patterns: []string{"*", "!batch"}, value: "batch", want: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := matchGroups(tt.patterns, tt.value); got != tt.want { + t.Fatalf("matchAny(%v, %q) = %v, want %v", tt.patterns, tt.value, got, tt.want) + } + }) + } +} + +func TestMatchResources(t *testing.T) { + apiRes := metav1.APIResource{ + Name: "pods", + SingularName: "pod", + Kind: "Pod", + ShortNames: []string{"po"}, + } + + tests := []struct { + name string + patterns []string + want bool + }{ + {name: "exclude plural excludes resource", patterns: []string{"!pods"}, want: false}, + {name: "exclude singular excludes resource", patterns: []string{"!pod"}, want: false}, + {name: "exclude short name excludes resource", patterns: []string{"!po"}, want: false}, + {name: "positive include works", patterns: []string{"pods"}, want: true}, + {name: "positive and negative prefers exclusion", patterns: []string{"*", "!po"}, want: false}, + {name: "negative unrelated keeps resource", patterns: []string{"!deployments"}, want: true}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := matchResources(tt.patterns, apiRes); got != tt.want { + t.Fatalf("matchResources(%v, %v) = %v, want %v", tt.patterns, apiRes.Name, got, tt.want) + } + }) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubectl-tree-0.5.0/cmd/kubectl-tree/rootcmd.go new/kubectl-tree-0.6.0/cmd/kubectl-tree/rootcmd.go --- old/kubectl-tree-0.5.0/cmd/kubectl-tree/rootcmd.go 2026-03-20 17:37:25.000000000 +0100 +++ new/kubectl-tree-0.6.0/cmd/kubectl-tree/rootcmd.go 2026-03-24 22:28:54.000000000 +0100 @@ -42,6 +42,7 @@ conditionTypesFlag = "condition-types" selectorFlag = "selector" apiGroupsFlag = "api-groups" + resourcesFlag = "resources" ) var ( @@ -107,6 +108,11 @@ return err } + resources, err := command.Flags().GetStringSlice(resourcesFlag) + if err != nil { + return err + } + restConfig, err := cf.ToRESTConfig() if err != nil { return err @@ -123,7 +129,7 @@ return fmt.Errorf("failed to construct discovery client: %w", err) } - apis, err := findAPIs(dc, apiGroups) + apis, err := findAPIs(dc, apiGroups, resources) if err != nil { return err } @@ -229,7 +235,8 @@ rootCmd.Flags().StringP(colorFlag, "c", "auto", "Enable or disable color output. This can be 'always', 'never', or 'auto' (default = use color only if using tty). The flag is overridden by the NO_COLOR env variable if set.") rootCmd.Flags().StringSlice(conditionTypesFlag, []string{"Ready"}, "Comma-separated list of condition types to check (default: Ready). Example: Ready,Processed,Scheduled") rootCmd.Flags().StringP(selectorFlag, "l", "", "Selector (label query) to filter on, supports '=', '==', and '!='. (e.g. -l key1=value1,key2=value2)") - rootCmd.Flags().StringSlice(apiGroupsFlag, nil, "Comma-separated list of API groups to include in the query, when not set all APIs are included (e.g. --api-groups=core,cluster.x-k8s.io,acme.cert-manager.io)") + rootCmd.Flags().StringSlice(apiGroupsFlag, nil, "Comma-separated list of API groups to include in the query, when not set all APIs are included, globs are supported (e.g. --api-groups=core,cluster.x-k8s.io,*.cert-manager.io)") + rootCmd.Flags().StringSlice(resourcesFlag, nil, "Comma-separated list of resource types to include in the query, when not set all resources are included, globs are supported (e.g. --resources=deployments,rs,pods)") cf.AddFlags(rootCmd.Flags()) if err := flag.Set("logtostderr", "true"); err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubectl-tree-0.5.0/go.mod new/kubectl-tree-0.6.0/go.mod --- old/kubectl-tree-0.5.0/go.mod 2026-03-20 17:37:25.000000000 +0100 +++ new/kubectl-tree-0.6.0/go.mod 2026-03-24 22:28:54.000000000 +0100 @@ -3,14 +3,14 @@ go 1.25.0 require ( - github.com/fatih/color v1.15.0 + github.com/fatih/color v1.19.0 github.com/gosuri/uitable v0.0.4 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 - k8s.io/apimachinery v0.35.2 - k8s.io/cli-runtime v0.35.2 - k8s.io/client-go v0.35.2 + k8s.io/apimachinery v0.35.3 + k8s.io/cli-runtime v0.35.3 + k8s.io/client-go v0.35.3 k8s.io/klog v1.0.0 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 sigs.k8s.io/cli-utils v0.35.0 @@ -36,8 +36,8 @@ github.com/json-iterator/go v1.1.12 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -53,7 +53,7 @@ golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.38.0 // indirect + golang.org/x/sys v0.42.0 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.9.0 // indirect @@ -61,7 +61,7 @@ gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.35.2 // indirect + k8s.io/api v0.35.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubectl-tree-0.5.0/go.sum new/kubectl-tree-0.6.0/go.sum --- old/kubectl-tree-0.5.0/go.sum 2026-03-20 17:37:25.000000000 +0100 +++ new/kubectl-tree-0.6.0/go.sum 2026-03-24 22:28:54.000000000 +0100 @@ -13,8 +13,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -64,11 +64,10 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= @@ -136,9 +135,9 @@ golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= @@ -159,14 +158,14 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw= -k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60= -k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8= -k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= -k8s.io/cli-runtime v0.35.2 h1:3DNctzpPNXavqyrm/FFiT60TLk4UjUxuUMYbKOE970E= -k8s.io/cli-runtime v0.35.2/go.mod h1:G2Ieu0JidLm5m1z9b0OkFhnykvJ1w+vjbz1tR5OFKL0= -k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o= -k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g= +k8s.io/api v0.35.3 h1:pA2fiBc6+N9PDf7SAiluKGEBuScsTzd2uYBkA5RzNWQ= +k8s.io/api v0.35.3/go.mod h1:9Y9tkBcFwKNq2sxwZTQh1Njh9qHl81D0As56tu42GA4= +k8s.io/apimachinery v0.35.3 h1:MeaUwQCV3tjKP4bcwWGgZ/cp/vpsRnQzqO6J6tJyoF8= +k8s.io/apimachinery v0.35.3/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= +k8s.io/cli-runtime v0.35.3 h1:UZq4ipNimtzBmhN7PPKbfAdqo8quK0H0UdGl6qAQnqI= +k8s.io/cli-runtime v0.35.3/go.mod h1:O7MUmCqcKSd5xI+O5X7/pRkB5l0O2NIhOdUVwbHLXu4= +k8s.io/client-go v0.35.3 h1:s1lZbpN4uI6IxeTM2cpdtrwHcSOBML1ODNTCCfsP1pg= +k8s.io/client-go v0.35.3/go.mod h1:RzoXkc0mzpWIDvBrRnD+VlfXP+lRzqQjCmKtiwZ8Q9c= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= ++++++ kubectl-tree.obsinfo ++++++ --- /var/tmp/diff_new_pack.KEoI8q/_old 2026-03-27 06:42:42.869153090 +0100 +++ /var/tmp/diff_new_pack.KEoI8q/_new 2026-03-27 06:42:42.921155239 +0100 @@ -1,5 +1,5 @@ name: kubectl-tree -version: 0.5.0 -mtime: 1774024645 -commit: 44b784104c46a1ebd3c9a2f990106c2790de7708 +version: 0.6.0 +mtime: 1774387734 +commit: 07c5f1241c0af99171cd3d3ff5ec0f109f37058f ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/kubectl-tree/vendor.tar.gz /work/SRC/openSUSE:Factory/.kubectl-tree.new.8177/vendor.tar.gz differ: char 12, line 1
