Add accessPath on Location objects to syft-json output (#2287)

* add accessPath on Location objects to syft-json output

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* generate json schema v12.0.1

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

---------

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Alex Goodman 2023-11-08 17:05:30 -06:00 committed by GitHub
parent dc14dbb326
commit 502971a1b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 2221 additions and 11 deletions

View File

@ -3,5 +3,5 @@ package internal
const (
// JSONSchemaVersion is the current schema version output by the JSON encoder
// This is roughly following the "SchemaVer" guidelines for versioning the JSON schema. Please see schema/json/README.md for details on how to increment.
JSONSchemaVersion = "12.0.0"
JSONSchemaVersion = "12.0.1"
)

File diff suppressed because it is too large Load Diff

View File

@ -20,8 +20,8 @@ type LocationData struct {
Coordinates `cyclonedx:""` // Empty string here means there is no intermediate property name, e.g. syft:locations:0:path without "coordinates"
// note: it is IMPORTANT to ignore anything but the coordinates for a Location when considering the ID (hash value)
// since the coordinates are the minimally correct ID for a location (symlinks should not come into play)
VirtualPath string `hash:"ignore" json:"-"` // The path to the file which may or may not have hardlinks / symlinks
ref file.Reference `hash:"ignore"` // The file reference relative to the stereoscope.FileCatalog that has more information about this location.
VirtualPath string `hash:"ignore" json:"accessPath"` // The path to the file which may or may not have hardlinks / symlinks
ref file.Reference `hash:"ignore"` // The file reference relative to the stereoscope.FileCatalog that has more information about this location.
}
func (l LocationData) Reference() file.Reference {
@ -179,7 +179,7 @@ func (l Location) String() string {
str += fmt.Sprintf("RealPath=%q", l.RealPath)
if l.VirtualPath != "" {
if l.VirtualPath != "" && l.VirtualPath != l.RealPath {
str += fmt.Sprintf(" VirtualPath=%q", l.VirtualPath)
}

View File

@ -117,7 +117,7 @@ func TestEncodeFullJSONDocument(t *testing.T) {
Artifacts: sbom.Artifacts{
Packages: catalog,
FileMetadata: map[file.Coordinates]file.Metadata{
file.NewLocation("/a/place").Coordinates: {
file.NewVirtualLocation("/a/place", "/a/symlink/to/place").Coordinates: {
FileInfo: stereoFile.ManualInfo{
NameValue: "/a/place",
ModeValue: 0775,

View File

@ -8,7 +8,8 @@
"foundBy": "the-cataloger-1",
"locations": [
{
"path": "/some/path/pkg1"
"path": "/some/path/pkg1",
"accessPath": "/some/path/pkg1"
}
],
"licenses": [
@ -48,7 +49,8 @@
"foundBy": "the-cataloger-2",
"locations": [
{
"path": "/some/path/pkg1"
"path": "/some/path/pkg1",
"accessPath": "/some/path/pkg1"
}
],
"licenses": [],

View File

@ -8,7 +8,8 @@
"foundBy": "the-cataloger-1",
"locations": [
{
"path": "/a/place/a"
"path": "/a/place/a",
"accessPath": "/a/place/a"
}
],
"licenses": [
@ -43,7 +44,8 @@
"foundBy": "the-cataloger-2",
"locations": [
{
"path": "/b/place/b"
"path": "/b/place/b",
"accessPath": "/b/place/b"
}
],
"licenses": [],

View File

@ -9,7 +9,8 @@
"locations": [
{
"path": "/somefile-1.txt",
"layerID": "sha256:100d5a55f9032faead28b7427fa3e650e4f0158f86ea89d06e1489df00cb8c6f"
"layerID": "sha256:100d5a55f9032faead28b7427fa3e650e4f0158f86ea89d06e1489df00cb8c6f",
"accessPath": "/somefile-1.txt"
}
],
"licenses": [
@ -45,7 +46,8 @@
"locations": [
{
"path": "/somefile-2.txt",
"layerID": "sha256:000fb9200890d3a19138478b20023023c0dce1c54352007c2863716780f049eb"
"layerID": "sha256:000fb9200890d3a19138478b20023023c0dce1c54352007c2863716780f049eb",
"accessPath": "/somefile-2.txt"
}
],
"licenses": [],