From 52bf4d14a719724dff277e023e5685d05d74b312 Mon Sep 17 00:00:00 2001 From: Bram Verschueren Date: Tue, 21 Jan 2025 11:37:21 +0100 Subject: [PATCH] prevent errorring out on crd path absence --- cmd/get/helpers.go | 74 +++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/cmd/get/helpers.go b/cmd/get/helpers.go index e72a4bf2..973d2229 100644 --- a/cmd/get/helpers.go +++ b/cmd/get/helpers.go @@ -145,8 +145,7 @@ func kindGroupNamespaced(alias string) (string, string, bool, error) { func kindGroupNamespacedFromCrds(alias string) (string, string, bool, error) { crdsPath := vars.MustGatherRootPath + "/cluster-scoped-resources/apiextensions.k8s.io/customresourcedefinitions/" - _, err := Exists(crdsPath) - if err == nil { + if ok, _ := Exists(crdsPath); ok { crds, rErr := ReadDirForResources(crdsPath) if rErr != nil { fmt.Fprintln(os.Stderr, rErr) @@ -194,48 +193,49 @@ func kindGroupNamespacedFromCrds(alias string) (string, string, bool, error) { } home, _ := os.UserHomeDir() omcCrdsPath := home + "/.omc/customresourcedefinitions/" - crds, rErr := ReadDirForResources(omcCrdsPath) - if rErr != nil { - fmt.Fprintln(os.Stderr, rErr) - } - for _, f := range crds { - crdYamlPath := omcCrdsPath + f.Name() - crdByte, _ := ioutil.ReadFile(crdYamlPath) - _crd := &apiextensionsv1.CustomResourceDefinition{} - if err := yaml.Unmarshal([]byte(crdByte), &_crd); err != nil { - continue + if ok, _ := Exists(omcCrdsPath); ok { + crds, rErr := ReadDirForResources(omcCrdsPath) + if rErr != nil { + fmt.Fprintln(os.Stderr, rErr) } - if strings.Contains(alias, ".") { - split := strings.Split(alias, ".") - if len(split) > 1 { - group := strings.Join(split[1:], ".") - if !strings.HasPrefix(_crd.Spec.Group, group) { - continue - } else { - _alias := strings.Join(split[:1], ".") - if strings.ToLower(_crd.Spec.Names.Plural) == _alias || strings.ToLower(_crd.Spec.Names.Singular) == _alias || StringInSlice(_alias, _crd.Spec.Names.ShortNames) { - namespaced := false - if _crd.Spec.Scope == "Namespaced" { - namespaced = true + for _, f := range crds { + crdYamlPath := omcCrdsPath + f.Name() + crdByte, _ := ioutil.ReadFile(crdYamlPath) + _crd := &apiextensionsv1.CustomResourceDefinition{} + if err := yaml.Unmarshal([]byte(crdByte), &_crd); err != nil { + continue + } + if strings.Contains(alias, ".") { + split := strings.Split(alias, ".") + if len(split) > 1 { + group := strings.Join(split[1:], ".") + if !strings.HasPrefix(_crd.Spec.Group, group) { + continue + } else { + _alias := strings.Join(split[:1], ".") + if strings.ToLower(_crd.Spec.Names.Plural) == _alias || strings.ToLower(_crd.Spec.Names.Singular) == _alias || StringInSlice(_alias, _crd.Spec.Names.ShortNames) { + namespaced := false + if _crd.Spec.Scope == "Namespaced" { + namespaced = true + } + vars.AliasToCrd[strings.ToLower(_crd.Spec.Names.Kind)+"."+_crd.Spec.Group] = apiextensionsv1.CustomResourceDefinition{Spec: _crd.Spec} + return _crd.Spec.Names.Plural, _crd.Spec.Group, namespaced, nil } - - vars.AliasToCrd[strings.ToLower(_crd.Spec.Names.Kind)+"."+_crd.Spec.Group] = apiextensionsv1.CustomResourceDefinition{Spec: _crd.Spec} - return _crd.Spec.Names.Plural, _crd.Spec.Group, namespaced, nil } } } - } - vars.AliasToCrd[strings.ToLower(_crd.Spec.Names.Kind)+"."+_crd.Spec.Group] = apiextensionsv1.CustomResourceDefinition{Spec: _crd.Spec} - if strings.ToLower(_crd.Spec.Names.Kind) == alias || strings.ToLower(_crd.Spec.Names.Plural) == alias || strings.ToLower(_crd.Spec.Names.Singular) == alias || StringInSlice(alias, _crd.Spec.Names.ShortNames) || _crd.Spec.Names.Singular+"."+_crd.Spec.Group == alias { - vars.AliasToCrd[alias] = apiextensionsv1.CustomResourceDefinition{Spec: _crd.Spec} - klog.V(4).Info("INFO ", fmt.Sprintf("Alias \"%s\" found in path \"%s\".", alias, crdYamlPath)) - namespaced := false - if _crd.Spec.Scope == "Namespaced" { - namespaced = true + vars.AliasToCrd[strings.ToLower(_crd.Spec.Names.Kind)+"."+_crd.Spec.Group] = apiextensionsv1.CustomResourceDefinition{Spec: _crd.Spec} + if strings.ToLower(_crd.Spec.Names.Kind) == alias || strings.ToLower(_crd.Spec.Names.Plural) == alias || strings.ToLower(_crd.Spec.Names.Singular) == alias || StringInSlice(alias, _crd.Spec.Names.ShortNames) || _crd.Spec.Names.Singular+"."+_crd.Spec.Group == alias { + vars.AliasToCrd[alias] = apiextensionsv1.CustomResourceDefinition{Spec: _crd.Spec} + klog.V(4).Info("INFO ", fmt.Sprintf("Alias \"%s\" found in path \"%s\".", alias, crdYamlPath)) + namespaced := false + if _crd.Spec.Scope == "Namespaced" { + namespaced = true + } + return _crd.Spec.Names.Plural, _crd.Spec.Group, namespaced, nil } - return _crd.Spec.Names.Plural, _crd.Spec.Group, namespaced, nil + klog.V(5).Info("INFO ", fmt.Sprintf("Alias \"%s\" not found in path \"%s\".", alias, crdYamlPath)) } - klog.V(5).Info("INFO ", fmt.Sprintf("Alias \"%s\" not found in path \"%s\".", alias, crdYamlPath)) } klog.V(4).Info("INFO ", fmt.Sprintf("No customResource found with name or alias \"%s\" in path: \"%s\".", alias, omcCrdsPath)) return alias, "", false, fmt.Errorf("No customResource found with name or alias \"%s\".", alias)