fork of https://github.com/sourcegraph/zoekt
0

Configure Feed

Select the types of activity you want to include in your feed.

gitea: remove duplication in fetching repos (#1046)

We had the same pagination logic repeated 3 times. Factor it out.

+18 -45
+18 -45
cmd/zoekt-mirror-gitea/main.go
··· 196 196 return 197 197 } 198 198 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) { 200 200 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 - 210 201 for { 211 202 repos, resp, err := client.SearchRepos(*searchOptions) 212 203 if err != nil { ··· 216 207 break 217 208 } 218 209 219 - searchOptions.Page = resp.NextPage 220 210 repos = filterRepositories(repos, *reposFilters.noArchived) 221 211 allRepos = append(allRepos, repos...) 212 + searchOptions.Page = resp.NextPage 222 213 if resp.NextPage == 0 { 223 214 break 224 215 } 225 216 } 217 + 226 218 return allRepos, nil 227 219 } 228 220 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) { 231 222 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 246 227 } 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) 248 236 } 249 237 250 238 func getUserRepos(client *gitea.Client, user string, reposFilters reposFilters) ([]*gitea.Repository, error) { 251 - var allRepos []*gitea.Repository 252 239 searchOptions := &gitea.SearchRepoOptions{} 253 240 u, _, err := client.GetUserInfo(user) 254 241 if err != nil { 255 242 return nil, err 256 243 } 257 244 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) 274 247 } 275 248 276 249 func cloneRepos(destDir string, repos []*gitea.Repository) error {