@@ -315,13 +315,19 @@ func (d *DepsClient) RetrieveDependencies(ctx context.Context, purls []string) e
315315// GetDependencies gets the information about dependencies for a PURL. This should be called after a
316316// call to RetrieveDependencies.
317317func (d * DepsClient ) GetDependencies (ctx context.Context , purls []string ) ([]* PackageComponent , error ) {
318+ logger := logging .FromContext (ctx )
318319 var pcs []* PackageComponent
319320 for _ , purl := range purls {
320321 pc , err := d .getDependenciesForPurl (ctx , purl )
322+ // log the error message if getDependenciesForPurl are not found but continue forward
323+ // this is to because there will be packages that deps.dev does not know about thus,
324+ // we will skip those and move forward.
321325 if err != nil {
322- return nil , fmt .Errorf ("failed to getDependencies for purl %v, with err: %w" , purl , err )
326+ logger .Debugf ("failed to getDependenciesForPurl with error: %v" , err )
327+ }
328+ if pc != nil {
329+ pcs = append (pcs , pc )
323330 }
324- pcs = append (pcs , pc )
325331 }
326332 return pcs , nil
327333}
@@ -334,51 +340,46 @@ func (d *DepsClient) getDependenciesForPurl(ctx context.Context, purl string) (*
334340
335341 packageInput , err := helpers .PurlToPkg (purl )
336342 if err != nil {
337- logger .Infof ("failed to parse purl to pkg: %s" , purl )
338- return nil , fmt .Errorf ("failed to parse purl to pkg: %w" , err )
343+ return nil , fmt .Errorf ("failed to parse purl to pkg: %s" , purl )
339344 }
340345
341346 // skip all type guac as they are generated by guac and will not be found in deps.dev
342347 if packageInput .Type == "guac" {
343- logger .Debugf ("guac purl, skipping deps.dev query: %s" , purl )
344- return nil , nil
348+ return nil , fmt .Errorf ("guac purl, skipping deps.dev query: %s" , purl )
345349 }
346350
347351 // if version is not specified, cannot obtain accurate information from deps.dev. Log as info and skip the purl.
348352 if * packageInput .Version == "" {
349- logger .Infof ("purl does not contain version, skipping deps.dev query: %s" , purl )
350- return nil , nil
353+ return nil , fmt .Errorf ("purl does not contain version, skipping deps.dev query: %s" , purl )
351354 }
352355
353356 component .CurrentPackage = packageInput
354357
355- err = d .collectAdditionalMetadata (ctx , packageInput .Type , packageInput .Namespace , packageInput .Name , packageInput .Version , component )
356- if err != nil {
357- logger .Debugf ("failed to get additional metadata for package: %s, err: %v" , purl , err )
358+ if err := d .collectAdditionalMetadata (ctx , packageInput .Type , packageInput .Namespace , packageInput .Name , packageInput .Version , component ); err != nil {
359+ return nil , fmt .Errorf ("failed to get additional metadata for package: %s, err: %w" , purl , err )
358360 }
359361
360362 // Make an RPC Request. The returned result is a stream of
361363 // DependenciesResponse structs.
362364 versionKey , err := getVersionKey (packageInput .Type , packageInput .Namespace , packageInput .Name , packageInput .Version )
363365 if err != nil {
364- logger .Infof ("failed to getVersionKey with the following error: %v" , err )
365- return nil , err
366+ return nil , fmt .Errorf ("failed to getVersionKey with the following error: %w" , err )
366367 }
367368
368369 dependenciesReq := & pb.GetDependenciesRequest {
369370 VersionKey : versionKey ,
370371 }
371372 var deps * pb.Dependencies
373+ var clientDepsErr error
372374 if _ , ok := d .dependencies [versionKey .String ()]; ok {
373375 deps = d .dependencies [versionKey .String ()]
374376 } else {
375377 logger .Debugf ("The version key was not found in the map: %v" , versionKey )
376- deps , err = d .client .GetDependencies (ctx , dependenciesReq )
377- if err != nil {
378- logger .Debugf ("failed to get dependencies: %v" , err )
379- return nil , err
378+ deps , clientDepsErr = d .client .GetDependencies (ctx , dependenciesReq )
379+ if clientDepsErr != nil {
380+ return nil , fmt .Errorf ("failed to get dependencies: %w" , clientDepsErr )
380381 }
381- logger .Infof ("Retrieved dependencies for %s" , purl )
382+ logger .Debugf ("Retrieved dependencies for %s" , purl )
382383 d .dependencies [versionKey .String ()] = deps
383384 }
384385
@@ -405,7 +406,7 @@ func (d *DepsClient) getDependenciesForPurl(ctx context.Context, purl string) (*
405406 depPurl := "pkg:" + pkgtype + "/" + node .VersionKey .Name + "@" + node .VersionKey .Version
406407 depPackageInput , err := helpers .PurlToPkg (depPurl )
407408 if err != nil {
408- logger .Infof ("unable to parse purl: %v, error: %v" , depPurl , err )
409+ logger .Debugf ("unable to parse purl: %v, error: %v" , depPurl , err )
409410 continue
410411 }
411412 // check if dependent package purl has already been queried. If found, append to the list of dependent packages for top level package
@@ -418,8 +419,8 @@ func (d *DepsClient) getDependenciesForPurl(ctx context.Context, purl string) (*
418419 continue
419420 }
420421 depComponent .CurrentPackage = depPackageInput
421- err = d .collectAdditionalMetadata (ctx , depPackageInput .Type , depPackageInput .Namespace , depPackageInput .Name , depPackageInput .Version , depComponent )
422- if err != nil {
422+ if err : = d .collectAdditionalMetadata (ctx , depPackageInput .Type , depPackageInput .Namespace , depPackageInput .Name , depPackageInput .Version , depComponent ); err != nil {
423+ // if additional metadata is not found (not found in deps.dev) log the error and move forward
423424 logger .Debugf ("failed to get additional metadata for package: %s, err: %v" , depPurl , err )
424425 }
425426 dependencyNodes = append (dependencyNodes , depComponent )
0 commit comments