mirror of
https://github.com/anchore/syft.git
synced 2025-11-20 01:43:17 +01:00
* set package ID in catalogers and improve hashing performance Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update setting ID + tests Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
27 lines
531 B
Go
27 lines
531 B
Go
package artifact
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/mitchellh/hashstructure/v2"
|
|
)
|
|
|
|
// ID represents a unique value for each package added to a package catalog.
|
|
type ID string
|
|
|
|
type Identifiable interface {
|
|
ID() ID
|
|
}
|
|
|
|
func IDByHash(obj interface{}) (ID, error) {
|
|
f, err := hashstructure.Hash(obj, hashstructure.FormatV2, &hashstructure.HashOptions{
|
|
ZeroNil: true,
|
|
SlicesAsSets: true,
|
|
})
|
|
if err != nil {
|
|
return "", fmt.Errorf("could not build ID for object=%+v: %+v", obj, err)
|
|
}
|
|
|
|
return ID(fmt.Sprintf("%x", f)), nil
|
|
}
|