Merge pull request #27 from crowdsecurity/add_custom_error

Adding custom error.
This commit is contained in:
Thibault "bui" Koechlin 2020-05-25 12:12:03 +02:00 committed by GitHub
commit d9a37683e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

8
pkg/cwhub/errors.go Normal file
View file

@ -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")

View file

@ -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
}