@@ -31,30 +31,34 @@ func (scanner GitLabScanner) ScanGroupOfRepos(
3131 return err
3232 }
3333
34- if isGitlabGroup (url ) {
34+ switch {
35+ case isGitlabGroup (url ):
3536 groupName := strings .Trim (url .Path , "/" )
3637
3738 group , _ , err := git .Groups .GetGroup (groupName , & gitlab.GetGroupOptions {})
3839 if err != nil {
39- return fmt .Errorf ("can't get GitLag group '%s': %w" , groupName , err )
40+ return fmt .Errorf ("can't get GitLab group '%s': %w" , groupName , err )
4041 }
4142
4243 if err = addGroupProjects (* group , publisher , repositories , git ); err != nil {
4344 return err
4445 }
45- } else {
46- opts := & gitlab.ListProjectsOptions {
47- ListOptions : gitlab.ListOptions {Page : 1 },
46+ default :
47+ // Root URL of an on premise instance, crawl all top level groups.
48+ topLevel := true
49+ opts := & gitlab.ListGroupsOptions {
50+ ListOptions : gitlab.ListOptions {Page : 1 },
51+ TopLevelOnly : & topLevel ,
4852 }
4953
5054 for {
51- projects , res , err := git .Projects . ListProjects (opts )
55+ groups , res , err := git .Groups . ListGroups (opts )
5256 if err != nil {
5357 return err
5458 }
5559
56- for _ , prj := range projects {
57- if err = addProject ( nil , * prj , publisher , repositories ); err != nil {
60+ for _ , g := range groups {
61+ if err = addGroupProjects ( * g , publisher , repositories , git ); err != nil {
5862 return err
5963 }
6064 }
0 commit comments