Skip to content

Commit 7aeefa5

Browse files
author
Rachel Dowavic
committed
Remove unused parameters from service-specific repository functions
Each get*Repositories function was receiving all 8 parameters from getRepositories, even though most were unused. For example, getGitlabRepositories received githubRepoType, githubNamespaceWhitelist, ignoreFork, and forgejoRepoType — none of which it uses. Now each function only accepts what it needs and uses typed client pointers instead of interface{}, with type assertions moved to the getRepositories dispatcher.
1 parent 15e3a70 commit 7aeefa5

5 files changed

Lines changed: 32 additions & 59 deletions

File tree

‎bitbucket.go‎

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,24 @@ import (
88
)
99

1010
func getBitbucketRepositories(
11-
client interface{},
12-
service string, githubRepoType string, githubNamespaceWhitelist []string,
13-
gitlabProjectVisibility string, gitlabProjectMembershipType string,
14-
ignoreFork bool, forgejoRepoType string,
11+
client *bitbucket.Client,
1512
) ([]*Repository, error) {
1613

1714
if client == nil {
18-
log.Fatalf("Couldn't acquire a client to talk to %s", service)
15+
log.Fatal("Couldn't acquire a client to talk to bitbucket")
1916
}
2017

2118
var repositories []*Repository
2219

23-
resp, err := client.(*bitbucket.Client).Workspaces.List()
20+
resp, err := client.Workspaces.List()
2421
if err != nil {
2522
return nil, err
2623
}
2724

2825
for _, workspace := range resp.Workspaces {
2926
options := &bitbucket.RepositoriesOptions{Owner: workspace.Slug}
3027

31-
resp, err := client.(*bitbucket.Client).Repositories.ListForAccount(options)
28+
resp, err := client.Repositories.ListForAccount(options)
3229
if err != nil {
3330
return nil, err
3431
}

‎forgejo.go‎

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,45 +8,42 @@ import (
88
)
99

1010
func getForgejoRepositories(
11-
client interface{},
12-
service string, githubRepoType string, githubNamespaceWhitelist []string,
13-
gitlabProjectVisibility string, gitlabProjectMembershipType string,
14-
ignoreFork bool, forgejoRepoType string,
11+
client *forgejo.Client,
12+
forgejoRepoType string,
1513
) ([]*Repository, error) {
14+
1615
if client == nil {
17-
log.Fatalf("Couldn't acquire a client to talk to %s", service)
16+
log.Fatal("Couldn't acquire a client to talk to forgejo")
1817
}
1918

20-
forgejoClient := client.(*forgejo.Client)
21-
2219
switch forgejoRepoType {
2320
case "starred":
24-
user, _, err := forgejoClient.GetMyUserInfo()
21+
user, _, err := client.GetMyUserInfo()
2522
if err != nil {
26-
log.Fatalf("Error fetching user info from %s: %v", service, err)
23+
log.Fatalf("Error fetching user info from forgejo: %v", err)
2724
}
2825

2926
log.Printf("Found user %s with ID %d", user.UserName, user.ID)
3027

3128
repos, err := paginateForgejoRepositories(func(page int) ([]*forgejo.Repository, *forgejo.Response, error) {
32-
return forgejoClient.SearchRepos(forgejo.SearchRepoOptions{
29+
return client.SearchRepos(forgejo.SearchRepoOptions{
3330
ListOptions: forgejo.ListOptions{Page: page},
3431
StarredByUserID: user.ID,
3532
})
3633
})
3734
if err != nil {
38-
return nil, fmt.Errorf("fetching starred repositories from %s: %v", service, err)
35+
return nil, fmt.Errorf("fetching starred repositories from forgejo: %v", err)
3936
}
4037

4138
return repos, nil
4239
case "user", "":
4340
repos, err := paginateForgejoRepositories(func(page int) ([]*forgejo.Repository, *forgejo.Response, error) {
44-
return forgejoClient.ListMyRepos(forgejo.ListReposOptions{
41+
return client.ListMyRepos(forgejo.ListReposOptions{
4542
ListOptions: forgejo.ListOptions{Page: page},
4643
})
4744
})
4845
if err != nil {
49-
return nil, fmt.Errorf("fetching user repositories from %s: %v", service, err)
46+
return nil, fmt.Errorf("fetching user repositories from forgejo: %v", err)
5047
}
5148

5249
return repos, nil

‎github.go‎

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,27 @@ import (
99
)
1010

1111
func getGithubRepositories(
12-
client interface{},
13-
service string, githubRepoType string, githubNamespaceWhitelist []string,
14-
gitlabProjectVisibility string, gitlabProjectMembershipType string,
15-
ignoreFork bool, forgejoRepoType string,
12+
client *github.Client,
13+
githubRepoType string, githubNamespaceWhitelist []string,
14+
ignoreFork bool,
1615
) ([]*Repository, error) {
1716

1817
if client == nil {
19-
log.Fatalf("Couldn't acquire a client to talk to %s", service)
18+
log.Fatal("Couldn't acquire a client to talk to github")
2019
}
2120

2221
var repositories []*Repository
2322

2423
ctx := context.Background()
2524

2625
if githubRepoType == "starred" {
27-
return getGithubStarredRepositories(ctx, client.(*github.Client), ignoreFork)
26+
return getGithubStarredRepositories(ctx, client, ignoreFork)
2827
}
2928

3029
options := github.RepositoryListOptions{Type: githubRepoType}
3130

3231
for {
33-
repos, resp, err := client.(*github.Client).Repositories.List(ctx, "", &options)
32+
repos, resp, err := client.Repositories.List(ctx, "", &options)
3433
if err != nil {
3534
return nil, err
3635
}

‎gitlab.go‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ import (
88
)
99

1010
func getGitlabRepositories(
11-
client interface{},
12-
service string, githubRepoType string, githubNamespaceWhitelist []string,
11+
client *gitlab.Client,
1312
gitlabProjectVisibility string, gitlabProjectMembershipType string,
14-
ignoreFork bool, forgejoRepoType string,
1513
) ([]*Repository, error) {
1614

1715
if client == nil {
18-
log.Fatalf("Couldn't acquire a client to talk to %s", service)
16+
log.Fatal("Couldn't acquire a client to talk to gitlab")
1917
}
2018

2119
var repositories []*Repository
@@ -53,7 +51,7 @@ func getGitlabRepositories(
5351
}
5452

5553
for {
56-
repos, resp, err := client.(*gitlab.Client).Projects.ListProjects(&gitlabListOptions)
54+
repos, resp, err := client.Projects.ListProjects(&gitlabListOptions)
5755
if err != nil {
5856
return nil, err
5957
}

‎repositories.go‎

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ package main
22

33
import (
44
"net/http"
5+
6+
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
7+
"github.com/google/go-github/v34/github"
8+
bitbucket "github.com/ktrysmt/go-bitbucket"
9+
gitlab "github.com/xanzy/go-gitlab"
510
)
611

712
// Response is derived from the following sources:
@@ -43,47 +48,24 @@ func getRepositories(
4348
switch service {
4449
case "github":
4550
repositories, err = getGithubRepositories(
46-
client,
47-
service,
51+
client.(*github.Client),
4852
githubRepoType,
4953
githubNamespaceWhitelist,
50-
gitlabProjectVisibility,
51-
gitlabProjectMembershipType,
5254
ignoreFork,
53-
forgejoRepoType,
5455
)
55-
5656
case "gitlab":
5757
repositories, err = getGitlabRepositories(
58-
client,
59-
service,
60-
githubRepoType,
61-
githubNamespaceWhitelist,
58+
client.(*gitlab.Client),
6259
gitlabProjectVisibility,
6360
gitlabProjectMembershipType,
64-
ignoreFork,
65-
forgejoRepoType,
6661
)
6762
case "bitbucket":
6863
repositories, err = getBitbucketRepositories(
69-
client,
70-
service,
71-
githubRepoType,
72-
githubNamespaceWhitelist,
73-
gitlabProjectVisibility,
74-
gitlabProjectMembershipType,
75-
ignoreFork,
76-
forgejoRepoType,
64+
client.(*bitbucket.Client),
7765
)
7866
case "forgejo":
7967
repositories, err = getForgejoRepositories(
80-
client,
81-
service,
82-
githubRepoType,
83-
githubNamespaceWhitelist,
84-
gitlabProjectVisibility,
85-
gitlabProjectMembershipType,
86-
ignoreFork,
68+
client.(*forgejo.Client),
8769
forgejoRepoType,
8870
)
8971
}

0 commit comments

Comments
 (0)