Skip to content

Commit c3d4afa

Browse files
authored
gitea: remove duplication in fetching repos (#1046)
We had the same pagination logic repeated 3 times. Factor it out.
1 parent e7773a4 commit c3d4afa

1 file changed

Lines changed: 18 additions & 45 deletions

File tree

cmd/zoekt-mirror-gitea/main.go

Lines changed: 18 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -196,17 +196,8 @@ func filterRepositories(repos []*gitea.Repository, noArchived bool) (filteredRep
196196
return
197197
}
198198

199-
func getOrgRepos(client *gitea.Client, org string, reposFilters reposFilters) ([]*gitea.Repository, error) {
199+
func searchRepos(client *gitea.Client, searchOptions *gitea.SearchRepoOptions, reposFilters reposFilters) ([]*gitea.Repository, error) {
200200
var allRepos []*gitea.Repository
201-
searchOptions := &gitea.SearchRepoOptions{}
202-
// OwnerID
203-
organization, _, err := client.GetOrg(org)
204-
if err != nil {
205-
return nil, err
206-
}
207-
208-
searchOptions.OwnerID = organization.ID
209-
210201
for {
211202
repos, resp, err := client.SearchRepos(*searchOptions)
212203
if err != nil {
@@ -216,61 +207,43 @@ func getOrgRepos(client *gitea.Client, org string, reposFilters reposFilters) ([
216207
break
217208
}
218209

219-
searchOptions.Page = resp.NextPage
220210
repos = filterRepositories(repos, *reposFilters.noArchived)
221211
allRepos = append(allRepos, repos...)
212+
searchOptions.Page = resp.NextPage
222213
if resp.NextPage == 0 {
223214
break
224215
}
225216
}
217+
226218
return allRepos, nil
227219
}
228220

229-
func getAllRepos(client *gitea.Client, reposFilters reposFilters) ([]*gitea.Repository, error) {
230-
var allRepos []*gitea.Repository
221+
func getOrgRepos(client *gitea.Client, org string, reposFilters reposFilters) ([]*gitea.Repository, error) {
231222
searchOptions := &gitea.SearchRepoOptions{}
232-
for {
233-
repos, resp, err := client.SearchRepos(*searchOptions)
234-
if err != nil {
235-
return nil, err
236-
}
237-
if len(repos) == 0 {
238-
break
239-
}
240-
repos = filterRepositories(repos, *reposFilters.noArchived)
241-
allRepos = append(allRepos, repos...)
242-
searchOptions.Page = resp.NextPage
243-
if resp.NextPage == 0 {
244-
break
245-
}
223+
// OwnerID
224+
organization, _, err := client.GetOrg(org)
225+
if err != nil {
226+
return nil, err
246227
}
247-
return allRepos, nil
228+
229+
searchOptions.OwnerID = organization.ID
230+
231+
return searchRepos(client, searchOptions, reposFilters)
232+
}
233+
234+
func getAllRepos(client *gitea.Client, reposFilters reposFilters) ([]*gitea.Repository, error) {
235+
return searchRepos(client, &gitea.SearchRepoOptions{}, reposFilters)
248236
}
249237

250238
func getUserRepos(client *gitea.Client, user string, reposFilters reposFilters) ([]*gitea.Repository, error) {
251-
var allRepos []*gitea.Repository
252239
searchOptions := &gitea.SearchRepoOptions{}
253240
u, _, err := client.GetUserInfo(user)
254241
if err != nil {
255242
return nil, err
256243
}
257244
searchOptions.OwnerID = u.ID
258-
for {
259-
repos, resp, err := client.SearchRepos(*searchOptions)
260-
if err != nil {
261-
return nil, err
262-
}
263-
if len(repos) == 0 {
264-
break
265-
}
266-
repos = filterRepositories(repos, *reposFilters.noArchived)
267-
allRepos = append(allRepos, repos...)
268-
searchOptions.Page = resp.NextPage
269-
if resp.NextPage == 0 {
270-
break
271-
}
272-
}
273-
return allRepos, nil
245+
246+
return searchRepos(client, searchOptions, reposFilters)
274247
}
275248

276249
func cloneRepos(destDir string, repos []*gitea.Repository) error {

0 commit comments

Comments
 (0)