Skip to content

Conversation

@ribbybibby
Copy link
Contributor

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.

  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
  5. 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.
  6. Implement a repositories.Mapper that gets repositories from the new BOM interface
  7. Add tests for all this craziness

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.
@ribbybibby ribbybibby merged commit ffa3e67 into main Feb 10, 2023
@ribbybibby ribbybibby deleted the repository-find-in-bom branch February 10, 2023 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Infer repositories from SBOM

3 participants