rebar_sbom (rebar_sbom v1.0.0)

View Source

Summary

Types

address/0

-type address() ::
          #address{bom_ref :: bom_ref() | undefined,
                   country :: string() | undefined,
                   region :: string() | undefined,
                   locality :: string() | undefined,
                   post_office_box_number :: string() | undefined,
                   postal_code :: string() | undefined,
                   street_address :: string() | undefined}.

bom_ref/0

-type bom_ref() :: string().

component/0

-type component() ::
          #component{type :: term(),
                     bom_ref :: string(),
                     authors :: [#{name := string()}],
                     name :: string(),
                     version :: string(),
                     description :: string(),
                     scope :: scope(),
                     hashes :: [#{alg := string(), hash := string()}],
                     licenses :: [#{name := string()} | #{id := string()}],
                     externalReferences :: [#external_reference{type :: string(), url :: string()}],
                     cpe :: string() | undefined,
                     purl :: string()}.

dependency/0

-type dependency() :: #dependency{ref :: string(), dependencies :: [#dependency{}]}.

external_reference/0

-type external_reference() :: #external_reference{type :: string(), url :: string()}.

individual/0

-type individual() ::
          #individual{bom_ref :: bom_ref() | undefined,
                      name :: string() | undefined,
                      email :: string() | undefined,
                      phone :: string() | undefined}.

license/0

-type license() ::
          #license{bom_ref :: bom_ref() | undefined,
                   id :: spdx_licence_id() | undefined,
                   name :: string() | undefined,
                   acknowledgement :: declared | concluded | undefined,
                   properties :: properties()}.

metadata/0

-type metadata() ::
          #metadata{timestamp :: string(),
                    component ::
                        #component{type :: term(),
                                   bom_ref :: string(),
                                   authors :: [#{name := string()}],
                                   name :: string(),
                                   version :: string(),
                                   description :: string(),
                                   scope :: scope(),
                                   hashes :: [#{alg := string(), hash := string()}],
                                   licenses :: [#{name := string()} | #{id := string()}],
                                   externalReferences ::
                                       [#external_reference{type :: string(), url :: string()}],
                                   cpe :: string() | undefined,
                                   purl :: string()},
                    tools ::
                        [#component{type :: term(),
                                    bom_ref :: string(),
                                    authors :: [#{name := string()}],
                                    name :: string(),
                                    version :: string(),
                                    description :: string(),
                                    scope :: scope(),
                                    hashes :: [#{alg := string(), hash := string()}],
                                    licenses :: [#{name := string()} | #{id := string()}],
                                    externalReferences ::
                                        [#external_reference{type :: string(), url :: string()}],
                                    cpe :: string() | undefined,
                                    purl :: string()}],
                    manufacturer ::
                        #organization{bom_ref :: bom_ref() | undefined,
                                      name :: string() | undefined,
                                      address ::
                                          #address{bom_ref :: bom_ref() | undefined,
                                                   country :: string() | undefined,
                                                   region :: string() | undefined,
                                                   locality :: string() | undefined,
                                                   post_office_box_number :: string() | undefined,
                                                   postal_code :: string() | undefined,
                                                   street_address :: string() | undefined} |
                                          undefined,
                                      url :: [string()],
                                      contact ::
                                          [#individual{bom_ref :: bom_ref() | undefined,
                                                       name :: string() | undefined,
                                                       email :: string() | undefined,
                                                       phone :: string() | undefined}]} |
                        undefined,
                    authors ::
                        [#individual{bom_ref :: bom_ref() | undefined,
                                     name :: string() | undefined,
                                     email :: string() | undefined,
                                     phone :: string() | undefined}],
                    licenses ::
                        [#license{bom_ref :: bom_ref() | undefined,
                                  id :: spdx_licence_id() | undefined,
                                  name :: string() | undefined,
                                  acknowledgement :: declared | concluded | undefined,
                                  properties :: properties()}],
                    properties :: properties()}.

organization/0

-type organization() ::
          #organization{bom_ref :: bom_ref() | undefined,
                        name :: string() | undefined,
                        address ::
                            #address{bom_ref :: bom_ref() | undefined,
                                     country :: string() | undefined,
                                     region :: string() | undefined,
                                     locality :: string() | undefined,
                                     post_office_box_number :: string() | undefined,
                                     postal_code :: string() | undefined,
                                     street_address :: string() | undefined} |
                            undefined,
                        url :: [string()],
                        contact ::
                            [#individual{bom_ref :: bom_ref() | undefined,
                                         name :: string() | undefined,
                                         email :: string() | undefined,
                                         phone :: string() | undefined}]}.

properties/0

-type properties() :: [{string(), string()}].

sbom/0

-type sbom() ::
          #sbom{format :: string(),
                version :: integer(),
                serial :: string() | undefined,
                metadata ::
                    #metadata{timestamp :: string(),
                              component ::
                                  #component{type :: term(),
                                             bom_ref :: string(),
                                             authors :: [#{name := string()}],
                                             name :: string(),
                                             version :: string(),
                                             description :: string(),
                                             scope :: scope(),
                                             hashes :: [#{alg := string(), hash := string()}],
                                             licenses :: [#{name := string()} | #{id := string()}],
                                             externalReferences ::
                                                 [#external_reference{type :: string(), url :: string()}],
                                             cpe :: string() | undefined,
                                             purl :: string()},
                              tools ::
                                  [#component{type :: term(),
                                              bom_ref :: string(),
                                              authors :: [#{name := string()}],
                                              name :: string(),
                                              version :: string(),
                                              description :: string(),
                                              scope :: scope(),
                                              hashes :: [#{alg := string(), hash := string()}],
                                              licenses :: [#{name := string()} | #{id := string()}],
                                              externalReferences ::
                                                  [#external_reference{type :: string(),
                                                                       url :: string()}],
                                              cpe :: string() | undefined,
                                              purl :: string()}],
                              manufacturer ::
                                  #organization{bom_ref :: bom_ref() | undefined,
                                                name :: string() | undefined,
                                                address ::
                                                    #address{bom_ref :: bom_ref() | undefined,
                                                             country :: string() | undefined,
                                                             region :: string() | undefined,
                                                             locality :: string() | undefined,
                                                             post_office_box_number ::
                                                                 string() | undefined,
                                                             postal_code :: string() | undefined,
                                                             street_address :: string() | undefined} |
                                                    undefined,
                                                url :: [string()],
                                                contact ::
                                                    [#individual{bom_ref :: bom_ref() | undefined,
                                                                 name :: string() | undefined,
                                                                 email :: string() | undefined,
                                                                 phone :: string() | undefined}]} |
                                  undefined,
                              authors ::
                                  [#individual{bom_ref :: bom_ref() | undefined,
                                               name :: string() | undefined,
                                               email :: string() | undefined,
                                               phone :: string() | undefined}],
                              licenses ::
                                  [#license{bom_ref :: bom_ref() | undefined,
                                            id :: spdx_licence_id() | undefined,
                                            name :: string() | undefined,
                                            acknowledgement :: declared | concluded | undefined,
                                            properties :: properties()}],
                              properties :: properties()} |
                    undefined,
                components ::
                    [#component{type :: term(),
                                bom_ref :: string(),
                                authors :: [#{name := string()}],
                                name :: string(),
                                version :: string(),
                                description :: string(),
                                scope :: scope(),
                                hashes :: [#{alg := string(), hash := string()}],
                                licenses :: [#{name := string()} | #{id := string()}],
                                externalReferences ::
                                    [#external_reference{type :: string(), url :: string()}],
                                cpe :: string() | undefined,
                                purl :: string()}],
                dependencies :: [#dependency{ref :: string(), dependencies :: [#dependency{}]}]}.

scope/0

-type scope() :: required | optional | excluded.

spdx_licence_id/0

-type spdx_licence_id() :: string().

Functions

init(State)

-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.