Skip to content

Commit 044ff15

Browse files
author
Rachel Dowavic
committed
Fix -ignore-fork filtering for GitLab, Bitbucket, and Forgejo
The ignoreFork flag was only implemented for GitHub. Add fork detection to the other three services: - GitLab: skip repos where ForkedFromProject is non-nil - Bitbucket: skip repos where Parent is non-nil - Forgejo: skip repos where Fork is true, threading ignoreFork into paginateForgejoRepositories Also pass ignoreFork from getRepositories to each service function.
1 parent c402d7b commit 044ff15

4 files changed

Lines changed: 18 additions & 3 deletions

File tree

bitbucket.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
func getBitbucketRepositories(
1010
client *bitbucket.Client,
11+
ignoreFork bool,
1112
) ([]*Repository, error) {
1213

1314
var repositories []*Repository
@@ -26,6 +27,9 @@ func getBitbucketRepositories(
2627
}
2728

2829
for _, repo := range resp.Items {
30+
if repo.Parent != nil && ignoreFork {
31+
continue
32+
}
2933
namespace := strings.Split(repo.Full_name, "/")[0]
3034

3135
httpsURL, sshURL := extractBitbucketCloneURLs(repo.Links)

forgejo.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
func getForgejoRepositories(
1111
client *forgejo.Client,
1212
forgejoRepoType string,
13+
ignoreFork bool,
1314
) ([]*Repository, error) {
1415

1516
switch forgejoRepoType {
@@ -26,7 +27,7 @@ func getForgejoRepositories(
2627
ListOptions: forgejo.ListOptions{Page: page},
2728
StarredByUserID: user.ID,
2829
})
29-
})
30+
}, ignoreFork)
3031
if err != nil {
3132
return nil, fmt.Errorf("fetching starred repositories from forgejo: %v", err)
3233
}
@@ -37,7 +38,7 @@ func getForgejoRepositories(
3738
return client.ListMyRepos(forgejo.ListReposOptions{
3839
ListOptions: forgejo.ListOptions{Page: page},
3940
})
40-
})
41+
}, ignoreFork)
4142
if err != nil {
4243
return nil, fmt.Errorf("fetching user repositories from forgejo: %v", err)
4344
}
@@ -48,7 +49,7 @@ func getForgejoRepositories(
4849
}
4950
}
5051

51-
func paginateForgejoRepositories(fetch func(page int) ([]*forgejo.Repository, *forgejo.Response, error)) ([]*Repository, error) {
52+
func paginateForgejoRepositories(fetch func(page int) ([]*forgejo.Repository, *forgejo.Response, error), ignoreFork bool) ([]*Repository, error) {
5253
var repositories []*Repository
5354
page := 1
5455

@@ -59,6 +60,9 @@ func paginateForgejoRepositories(fetch func(page int) ([]*forgejo.Repository, *f
5960
}
6061

6162
for _, repo := range results {
63+
if repo.Fork && ignoreFork {
64+
continue
65+
}
6266
repositories = append(repositories, &Repository{
6367
CloneURL: getCloneURL(repo.CloneURL, repo.SSHURL),
6468
Name: repo.Name,

gitlab.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
func getGitlabRepositories(
1010
client *gitlab.Client,
1111
gitlabProjectVisibility string, gitlabProjectMembershipType string,
12+
ignoreFork bool,
1213
) ([]*Repository, error) {
1314

1415
var repositories []*Repository
@@ -51,6 +52,9 @@ func getGitlabRepositories(
5152
return nil, err
5253
}
5354
for _, repo := range repos {
55+
if repo.ForkedFromProject != nil && ignoreFork {
56+
continue
57+
}
5458
namespace := strings.Split(repo.PathWithNamespace, "/")[0]
5559
cloneURL := getCloneURL(repo.WebURL, repo.SSHURLToRepo)
5660
repositories = append(repositories, &Repository{

repositories.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,18 @@ func getRepositories(
6363
client.(*gitlab.Client),
6464
gitlabProjectVisibility,
6565
gitlabProjectMembershipType,
66+
ignoreFork,
6667
)
6768
case "bitbucket":
6869
repositories, err = getBitbucketRepositories(
6970
client.(*bitbucket.Client),
71+
ignoreFork,
7072
)
7173
case "forgejo":
7274
repositories, err = getForgejoRepositories(
7375
client.(*forgejo.Client),
7476
forgejoRepoType,
77+
ignoreFork,
7578
)
7679
}
7780
return repositories, err

0 commit comments

Comments
 (0)