Skip to content

Commit

Permalink
Merge branch 'main' into command-package-refactor
Browse files Browse the repository at this point in the history
* main:
  Preserve syft IDs on SBOM decode (#963)
  Update GitHub format package_url and correlator (#961)
  • Loading branch information
spiffcs committed Apr 19, 2022
2 parents a9f96fe + 172ecc0 commit c78c1bf
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 9 deletions.
2 changes: 1 addition & 1 deletion internal/formats/github/encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ func toGithubManifests(s *sbom.SBOM) Manifests {

name := dependencyName(p)
manifest.Resolved[name] = DependencyNode{
Purl: p.PURL,
PackageURL: p.PURL,
Metadata: toDependencyMetadata(p),
Relationship: toDependencyRelationshipType(p),
Scope: toDependencyScope(p),
Expand Down
6 changes: 3 additions & 3 deletions internal/formats/github/encoder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,12 +104,12 @@ func Test_toGithubModel(t *testing.T) {
},
Resolved: DependencyGraph{
"pkg:generic/pkg-1@1.0.1": DependencyNode{
Purl: "pkg:generic/pkg-1@1.0.1",
PackageURL: "pkg:generic/pkg-1@1.0.1",
Scope: DependencyScopeRuntime,
Relationship: DependencyRelationshipDirect,
},
"pkg:generic/pkg-2@2.0.2": DependencyNode{
Purl: "pkg:generic/pkg-2@2.0.2",
PackageURL: "pkg:generic/pkg-2@2.0.2",
Scope: DependencyScopeRuntime,
Relationship: DependencyRelationshipDirect,
},
Expand All @@ -125,7 +125,7 @@ func Test_toGithubModel(t *testing.T) {
},
Resolved: DependencyGraph{
"pkg:generic/pkg-3@3.0.3": DependencyNode{
Purl: "pkg:generic/pkg-3@3.0.3",
PackageURL: "pkg:generic/pkg-3@3.0.3",
Scope: DependencyScopeRuntime,
Relationship: DependencyRelationshipDirect,
},
Expand Down
8 changes: 4 additions & 4 deletions internal/formats/github/github_dependency_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ type DependencySnapshot struct {
}

type Job struct {
Name string `json:"name,omitempty"` // !omitempty
ID string `json:"id,omitempty"` // !omitempty
HTMLURL string `json:"html_url,omitempty"`
Correlator string `json:"correlator,omitempty"` // !omitempty
ID string `json:"id,omitempty"` // !omitempty
HTMLURL string `json:"html_url,omitempty"`
}

type DetectorMetadata struct {
Expand Down Expand Up @@ -62,7 +62,7 @@ const (
)

type DependencyNode struct {
Purl string `json:"purl,omitempty"`
PackageURL string `json:"package_url,omitempty"`
Metadata Metadata `json:"metadata,omitempty"`
Relationship DependencyRelationship `json:"relationship,omitempty"`
Scope DependencyScope `json:"scope,omitempty"`
Expand Down
6 changes: 5 additions & 1 deletion internal/formats/syftjson/to_syft_model.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,12 @@ func toSyftPackage(p model.Package, idAliases map[string]string) pkg.Package {
Metadata: p.Metadata,
}

out.SetID()
// we don't know if this package ID is truly unique, however, we need to trust the user input in case there are
// external references to it. That is, we can't derive our own ID (using pkg.SetID()) since consumers won't
// be able to historically interact with data that references the IDs from the original SBOM document being decoded now.
out.OverrideID(artifact.ID(p.ID))

// this alias mapping is currently defunct, but could be useful in the future.
id := string(out.ID())
if id != p.ID {
idAliases[p.ID] = id
Expand Down
4 changes: 4 additions & 0 deletions syft/pkg/package.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ type Package struct {
Metadata interface{} // additional data found while parsing the package source
}

func (p *Package) OverrideID(id artifact.ID) {
p.id = id
}

func (p *Package) SetID() {
id, err := artifact.IDByHash(p)
if err != nil {
Expand Down

0 comments on commit c78c1bf

Please sign in to comment.