@@ -32,11 +32,19 @@ func GetLatestRelease(client *github.Client) (*github.RepositoryRelease, error)
3232 return rel , err
3333}
3434
35- func GetReleases (client * github.Client , paginate bool ) ([]* github.RepositoryRelease , error ) {
36- opts := & github.ListOptions {PerPage : 50 }
35+ func GetReleases (client * github.Client , n int ) ([]* github.RepositoryRelease , error ) {
36+ // max of 50 per page
37+ perPage := 50
38+ remaining := n - perPage
39+ if n < 50 {
40+ remaining = 0
41+ perPage = n
42+ }
3743 var releases []* github.RepositoryRelease
44+ opts := & github.ListOptions {PerPage : perPage }
3845 for {
3946 start := time .Now ()
47+ log .Tracef ("perpage: %d, remaining: %d" , opts .PerPage , remaining )
4048 rel , resp , err := client .Repositories .ListReleases (
4149 context .Background (),
4250 "quarto-dev" ,
@@ -48,9 +56,15 @@ func GetReleases(client *github.Client, paginate bool) ([]*github.RepositoryRele
4856 }
4957 releases = append (releases , rel ... )
5058 log .Tracef ("repository release paginator: %s, page: %d" , time .Since (start ), resp .NextPage )
51- if ! paginate || resp .NextPage == 0 {
59+ if remaining <= 0 || resp .NextPage == 0 {
5260 break
5361 }
62+ if remaining <= perPage {
63+ opts .PerPage = remaining
64+ remaining = 0
65+ } else {
66+ remaining -= perPage
67+ }
5468 opts .Page = resp .NextPage
5569 }
5670 return releases , nil
0 commit comments