@@ -8,15 +8,14 @@ import (
88 "os"
99 "sheriff/internal/config"
1010 "sheriff/internal/git"
11- "sheriff/internal/gitlab"
1211 "sheriff/internal/publish"
12+ "sheriff/internal/repo"
1313 "sheriff/internal/scanner"
1414 "sheriff/internal/slack"
1515 "sync"
1616
1717 "github.com/elliotchance/pie/v2"
1818 "github.com/rs/zerolog/log"
19- gogitlab "github.com/xanzy/go-gitlab"
2019 "golang.org/x/exp/slices"
2120)
2221
@@ -30,7 +29,7 @@ type securityPatroller interface {
3029
3130// sheriffService is the implementation of the SecurityPatroller interface.
3231type sheriffService struct {
33- gitlabService gitlab .IService
32+ gitlabService repo .IService
3433 slackService slack.IService
3534 gitService git.IService
3635 osvService scanner.VulnScanner [scanner.OsvReport ]
@@ -39,7 +38,7 @@ type sheriffService struct {
3938// New creates a new securityPatroller service.
4039// It contains the main "loop" logic of this tool.
4140// A "patrol" is defined as scanning GitLab groups for vulnerabilities and publishing reports where needed.
42- func New (gitlabService gitlab .IService , slackService slack.IService , gitService git.IService , osvService scanner.VulnScanner [scanner.OsvReport ]) securityPatroller {
41+ func New (gitlabService repo .IService , slackService slack.IService , gitService git.IService , osvService scanner.VulnScanner [scanner.OsvReport ]) securityPatroller {
4342 return & sheriffService {
4443 gitlabService : gitlabService ,
4544 slackService : slackService ,
@@ -127,10 +126,10 @@ func (s *sheriffService) scanAndGetReports(locations []config.ProjectLocation) (
127126 wg .Add (1 )
128127 go func (reportsChan chan <- scanner.Report ) {
129128 defer wg .Done ()
130- log .Info ().Str ("project" , project .Name ).Msg ("Scanning project" )
129+ log .Info ().Str ("project" , project .Path ).Msg ("Scanning project" )
131130 if report , err := s .scanProject (project ); err != nil {
132- log .Error ().Err (err ).Str ("project" , project .Name ).Msg ("Failed to scan project, skipping." )
133- err = errors .Join (fmt .Errorf ("failed to scan project %v" , project .Name ), err )
131+ log .Error ().Err (err ).Str ("project" , project .Path ).Msg ("Failed to scan project, skipping." )
132+ err = errors .Join (fmt .Errorf ("failed to scan project %v" , project .Path ), err )
134133 warn = errors .Join (err , warn )
135134 reportsChan <- scanner.Report {Project : project , Error : true }
136135 } else {
@@ -154,31 +153,31 @@ func (s *sheriffService) scanAndGetReports(locations []config.ProjectLocation) (
154153}
155154
156155// scanProject scans a project for vulnerabilities using the osv scanner.
157- func (s * sheriffService ) scanProject (project gogitlab .Project ) (report * scanner.Report , err error ) {
156+ func (s * sheriffService ) scanProject (project repo .Project ) (report * scanner.Report , err error ) {
158157 dir , err := os .MkdirTemp (tempScanDir , fmt .Sprintf ("%v-" , project .Name ))
159158 if err != nil {
160159 return nil , errors .Join (errors .New ("failed to create project temporary directory" ), err )
161160 }
162161 defer os .RemoveAll (dir )
163162
164163 // Clone the project
165- log .Info ().Str ("project" , project .Name ).Str ("dir" , dir ).Msg ("Cloning project" )
166- if err = s .gitService .Clone (dir , project .HTTPURLToRepo ); err != nil {
164+ log .Info ().Str ("project" , project .Path ).Str ("dir" , dir ).Msg ("Cloning project" )
165+ if err = s .gitService .Clone (dir , project .RepoUrl ); err != nil {
167166 return nil , errors .Join (errors .New ("failed to clone project" ), err )
168167 }
169168
170- config := config .GetProjectConfiguration (project .NameWithNamespace , dir )
169+ config := config .GetProjectConfiguration (project .Path , dir )
171170
172171 // Scan the project
173- log .Info ().Str ("project" , project .Name ).Msg ("Running osv-scanner" )
172+ log .Info ().Str ("project" , project .Path ).Msg ("Running osv-scanner" )
174173 osvReport , err := s .osvService .Scan (dir )
175174 if err != nil {
176- log .Error ().Err (err ).Str ("project" , project .Name ).Msg ("Failed to run osv-scanner" )
175+ log .Error ().Err (err ).Str ("project" , project .Path ).Msg ("Failed to run osv-scanner" )
177176 return nil , errors .Join (errors .New ("failed to run osv-scanner" ), err )
178177 }
179178
180179 r := s .osvService .GenerateReport (project , osvReport )
181- log .Info ().Str ("project" , project .Name ).Msg ("Finished scanning with osv-scanner" )
180+ log .Info ().Str ("project" , project .Path ).Msg ("Finished scanning with osv-scanner" )
182181
183182 r .ProjectConfig = config
184183
0 commit comments