Skip to content

Commit 31d7d18

Browse files
committed
feat: crawl top level groups when given self hosted GitLab root URL
1 parent ae69e47 commit 31d7d18

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

scanner/gitlab.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)