@@ -117,16 +117,17 @@ func (p *Provider) gatherAccessiblePage(page int) ([]dnacollector.GitRepository,
117
117
return repositories , resp .TotalPages , nil
118
118
}
119
119
120
- func (p * Provider ) gatherGroupProjectPage (page int ) ([]dnacollector.GitRepository , int , error ) {
121
- opt := & gitlab.ListProjectsOptions {
120
+ func (p * Provider ) gatherGroupProjectPage (groupID , page int ) ([]dnacollector.GitRepository , int , error ) {
121
+ opt := & gitlab.ListGroupProjectsOptions {
122
122
ListOptions : gitlab.ListOptions {
123
- PerPage : reposPerPage , Page : page ,
124
- }, Statistics : gitlab .Bool (true ),
123
+ PerPage : reposPerPage ,
124
+ Page : page ,
125
+ },
125
126
}
126
127
127
128
log .Infof ("Gathering page %v for %v\n " , page , p .client .BaseURL ())
128
129
129
- repos , resp , err := p .client .Projects . ListProjects ( opt )
130
+ repos , resp , err := p .client .Groups . ListGroupProjects ( groupID , opt )
130
131
if err != nil {
131
132
return nil , 0 , err
132
133
}
@@ -226,27 +227,38 @@ func (p *Provider) collectFromGroup(repositories []dnacollector.GitRepository,
226
227
return repositories
227
228
}
228
229
229
- opt := & gitlab.ListGroupProjectsOptions {
230
- ListOptions : gitlab.ListOptions {
231
- PerPage : reposPerPage ,
232
- Page : 1 ,
233
- },
234
- }
230
+ wg := sync.WaitGroup {}
235
231
236
- repos , resp , err := p .client .Groups .ListGroupProjects (groupID , opt )
232
+ var mu sync.Mutex
233
+
234
+ _ , totalPages , err := p .gatherGroupProjectPage (groupID , 1 )
237
235
if err != nil {
238
- log .Errorf ("Error gathering page: %v\n " , err )
236
+ log .Errorf ("Error gathering first page: %v\n " , err )
239
237
240
238
return repositories
241
239
}
242
240
243
- pagesCount := resp . TotalPages
244
- log . Infof ( "Gathering %v pages for %s \n " , pagesCount , user )
241
+ for pageCount := 1 ; pageCount <= totalPages ; pageCount ++ {
242
+ wg . Add ( 1 )
245
243
246
- for _ , repo := range repos {
247
- repositories = append (repositories , createFromGitlabRepo (repo ))
244
+ go func (page int ) {
245
+ defer wg .Done ()
246
+
247
+ pageRepositories , _ , err := p .gatherGroupProjectPage (groupID , page )
248
+ if err != nil {
249
+ log .Errorf ("Error gathering page %v:%v\n " , page , err )
250
+
251
+ return
252
+ }
253
+
254
+ mu .Lock ()
255
+ repositories = append (repositories , pageRepositories ... )
256
+ mu .Unlock ()
257
+ }(pageCount )
248
258
}
249
259
260
+ wg .Wait ()
261
+
250
262
return repositories
251
263
}
252
264
0 commit comments