From 34a61560978f1f0056f4c85c64e524af318dba94 Mon Sep 17 00:00:00 2001 From: erenJag Date: Mon, 25 May 2020 10:55:05 +0200 Subject: [PATCH] add custom error to be able to ignore or fatalF when reference is missing in collection --- pkg/cwhub/errors.go | 8 ++++++++ pkg/cwhub/hubMgmt.go | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 pkg/cwhub/errors.go diff --git a/pkg/cwhub/errors.go b/pkg/cwhub/errors.go new file mode 100644 index 000000000..8a8f4423e --- /dev/null +++ b/pkg/cwhub/errors.go @@ -0,0 +1,8 @@ +package cwhub + +import ( + "errors" +) + +/*To be used when reference(s) (is/are) missing in a collection*/ +var ReferenceMissingError = errors.New("Reference(s) missing in collection") diff --git a/pkg/cwhub/hubMgmt.go b/pkg/cwhub/hubMgmt.go index 56cc0cad8..29100a167 100644 --- a/pkg/cwhub/hubMgmt.go +++ b/pkg/cwhub/hubMgmt.go @@ -3,6 +3,7 @@ package cwhub import ( "crypto/sha256" "encoding/json" + "errors" "fmt" "io" "io/ioutil" @@ -375,7 +376,9 @@ func GetHubIdx() error { } ret, err := LoadPkgIndex(bidx) if err != nil { - log.Fatalf("Unable to load existing index : %v.", err) + if !errors.Is(err, ReferenceMissingError) { + log.Fatalf("Unable to load existing index : %v.", err) + } } HubIdx = ret if err := LocalSync(); err != nil { @@ -391,7 +394,9 @@ func UpdateHubIdx() error { } ret, err := LoadPkgIndex(bidx) if err != nil { - log.Fatalf("Unable to load freshly downloaded index : %v.", err) + if !errors.Is(err, ReferenceMissingError) { + log.Fatalf("Unable to load freshly downloaded index : %v.", err) + } } HubIdx = ret if err := LocalSync(); err != nil { @@ -450,6 +455,7 @@ func DisplaySummary() { func LoadPkgIndex(buff []byte) (map[string]map[string]Item, error) { var err error var RawIndex map[string]map[string]Item + var missingItems []string if err = json.Unmarshal(buff, &RawIndex); err != nil { return nil, fmt.Errorf("failed to unmarshal index : %v", err) @@ -473,12 +479,16 @@ func LoadPkgIndex(buff []byte) (map[string]map[string]Item, error) { for _, p := range ptr { if _, ok := RawIndex[ptrtype][p]; !ok { log.Errorf("Referred %s %s in collection %s doesn't exist.", ptrtype, p, item.Name) + missingItems = append(missingItems, p) } } } } } } + if len(missingItems) > 0 { + return RawIndex, fmt.Errorf("%q : %w", missingItems, ReferenceMissingError) + } return RawIndex, nil }