Extract repository information from BOM#34
Merged
ribbybibby merged 2 commits intomainfrom Feb 10, 2023
Merged
Conversation
Infer repositories from Go package names and extract them from the external references in a CycloneDX SBOM. This ended up being quite a big piece of work, mostly because I wanted to refactor things so adding new sources of repository information will be more straightforward in future. 1. Create a repositories.Mapper interface that retrieves repositories for a package. This enables multiple implementations that use different methods to find repositories. 2. Implement a repositories.Mapper that infers the repository from the Go package names (if it can) 3. Tweak the db interfaces to add a db.RepositoryReader that only implements the GetRepositories method 4. Implement a repositories.Mapper that gets repositories from the tally database with the db.RepositoryReader interface 4. Refactor the bom parsing to produce a 'BOM' interface that can be used to get repositories from the BOM. The repositories are parsed out of the external references with some custom logic to handle the myriad of different formats a github URL can appear in. 5. Implement a repositories.Mapper that gets repositories from the new BOM interface 6. Add tests for all this craziness
These fields can include hints to github repositories as well.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5
Infer repositories from Go package names and extract them from the external references in a CycloneDX SBOM.
This ended up being quite a big piece of work, mostly because I wanted to refactor things so adding new sources of repository information will be more straightforward in future.
repositories.Mapperinterface that retrieves repositories for a package. This enables multiple implementations that use different methods to find repositories.repositories.Mapperthat infers the repository from the Go package names (if it can)db.RepositoryReaderthat only implements the GetRepositories methodrepositories.Mapperthat gets repositories from the tally database with thedb.RepositoryReaderinterface