Skip to content

Commit

Permalink
return results from the analyze functions
Browse files Browse the repository at this point in the history
  • Loading branch information
SUSTAPLE117 committed Nov 20, 2024
1 parent 236be99 commit 73ada04
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 21 deletions.
51 changes: 33 additions & 18 deletions analyze/analyze.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ type Analyzer struct {
Opa *opa.Opa
}

func (a *Analyzer) AnalyzeOrg(ctx context.Context, org string, numberOfGoroutines *int) error {
func (a *Analyzer) AnalyzeOrg(ctx context.Context, org string, numberOfGoroutines *int) ([]*models.PackageInsights, error) {
provider := a.ScmClient.GetProviderName()

providerVersion, err := a.ScmClient.GetProviderVersion(ctx)
Expand Down Expand Up @@ -128,7 +128,7 @@ func (a *Analyzer) AnalyzeOrg(ctx context.Context, org string, numberOfGoroutine

for repoBatch := range orgReposBatches {
if repoBatch.Err != nil {
return fmt.Errorf("failed to get batch of repos: %w", repoBatch.Err)
return scannedPackages, fmt.Errorf("failed to get batch of repos: %w", repoBatch.Err)
}
if repoBatch.TotalCount != 0 {
bar.ChangeMax(repoBatch.TotalCount)
Expand All @@ -146,7 +146,7 @@ func (a *Analyzer) AnalyzeOrg(ctx context.Context, org string, numberOfGoroutine
}
if err := goRoutineLimitSem.Acquire(ctx, 1); err != nil {
close(errChan)
return fmt.Errorf("failed to acquire semaphore: %w", err)
return scannedPackages, fmt.Errorf("failed to acquire semaphore: %w", err)
}

reposWg.Add(1)
Expand Down Expand Up @@ -194,23 +194,28 @@ func (a *Analyzer) AnalyzeOrg(ctx context.Context, org string, numberOfGoroutine

for err := range errChan {
if err != nil {
return err
return scannedPackages, err
}
}

_ = bar.Finish()

return a.finalizeAnalysis(ctx, scannedPackages)
err = a.finalizeAnalysis(ctx, scannedPackages)
if err != nil {
return scannedPackages, err
}

return scannedPackages, nil
}

func (a *Analyzer) AnalyzeRepo(ctx context.Context, repoString string, ref string) error {
func (a *Analyzer) AnalyzeRepo(ctx context.Context, repoString string, ref string) (*models.PackageInsights, error) {
org, repoName, err := a.ScmClient.ParseRepoAndOrg(repoString)
if err != nil {
return fmt.Errorf("failed to parse repository: %w", err)
return nil, fmt.Errorf("failed to parse repository: %w", err)
}
repo, err := a.ScmClient.GetRepo(ctx, org, repoName)
if err != nil {
return fmt.Errorf("failed to get repo: %w", err)
return nil, fmt.Errorf("failed to get repo: %w", err)
}
provider := repo.GetProviderName()

Expand All @@ -230,7 +235,7 @@ func (a *Analyzer) AnalyzeRepo(ctx context.Context, repoString string, ref strin

tempDir, err := a.cloneRepoToTemp(ctx, repo.BuildGitURL(a.ScmClient.GetProviderBaseURL()), a.ScmClient.GetToken(), ref)
if err != nil {
return err
return nil, err
}
defer os.RemoveAll(tempDir)

Expand All @@ -239,26 +244,31 @@ func (a *Analyzer) AnalyzeRepo(ctx context.Context, repoString string, ref strin

pkg, err := a.generatePackageInsights(ctx, tempDir, repo, ref)
if err != nil {
return err
return nil, err
}

scannedPackage, err := inventory.ScanPackage(ctx, *pkg, tempDir)
if err != nil {
return err
return nil, err
}
_ = bar.Finish()

return a.finalizeAnalysis(ctx, []*models.PackageInsights{scannedPackage})
err = a.finalizeAnalysis(ctx, []*models.PackageInsights{scannedPackage})
if err != nil {
return nil, err
}

return scannedPackage, nil
}

func (a *Analyzer) AnalyzeLocalRepo(ctx context.Context, repoPath string) error {
func (a *Analyzer) AnalyzeLocalRepo(ctx context.Context, repoPath string) (*models.PackageInsights, error) {
org, repoName, err := a.ScmClient.ParseRepoAndOrg(repoPath)
if err != nil {
return fmt.Errorf("failed to parse repository: %w", err)
return nil, fmt.Errorf("failed to parse repository: %w", err)
}
repo, err := a.ScmClient.GetRepo(ctx, org, repoName)
if err != nil {
return fmt.Errorf("failed to get repo: %w", err)
return nil, fmt.Errorf("failed to get repo: %w", err)
}
provider := repo.GetProviderName()

Expand All @@ -276,15 +286,20 @@ func (a *Analyzer) AnalyzeLocalRepo(ctx context.Context, repoPath string) error

pkg, err := a.generatePackageInsights(ctx, repoPath, repo, "")
if err != nil {
return err
return nil, err
}

scannedPackage, err := inventory.ScanPackage(ctx, *pkg, repoPath)
if err != nil {
return err
return nil, err
}

err = a.finalizeAnalysis(ctx, []*models.PackageInsights{scannedPackage})
if err != nil {
return nil, err
}

return a.finalizeAnalysis(ctx, []*models.PackageInsights{scannedPackage})
return scannedPackage, nil
}

type Formatter interface {
Expand Down
2 changes: 1 addition & 1 deletion cmd/analyzeLocal.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Example: poutine analyze_local /path/to/repo`,

analyzer := analyze.NewAnalyzer(localScmClient, localGitClient, formatter, config, opaClient)

err = analyzer.AnalyzeLocalRepo(ctx, repoPath)
_, err = analyzer.AnalyzeLocalRepo(ctx, repoPath)
if err != nil {
return fmt.Errorf("failed to analyze repoPath %s: %w", repoPath, err)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/analyzeOrg.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Note: This command will scan all repositories in the organization except those t

org := args[0]

err = analyzer.AnalyzeOrg(ctx, org, &threads)
_, err = analyzer.AnalyzeOrg(ctx, org, &threads)
if err != nil {
return fmt.Errorf("failed to analyze org %s: %w", org, err)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/analyzeRepo.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Example Scanning a remote Github Repository: poutine analyze_repo org/repo --tok

repo := args[0]

err = analyzer.AnalyzeRepo(ctx, repo, ref)
_, err = analyzer.AnalyzeRepo(ctx, repo, ref)
if err != nil {
return fmt.Errorf("failed to analyze repo %s: %w", repo, err)
}
Expand Down

0 comments on commit 73ada04

Please sign in to comment.