From e96a17dc9e7db58256ad681001a99685f74f2a6f Mon Sep 17 00:00:00 2001 From: Pawel Boguslawski Date: Mon, 29 Mar 2021 13:44:47 +0200 Subject: [PATCH 1/2] Incomplete Gitea repository list fixed Woodpecker may display incomplete list of Gitea repositores user has access to because Gitea forces paginated repo list reading. This mod fixes it. Related: https://gitea.com/gitea/go-sdk/issues/507 Author-Change-Id: IB#1107754 --- remote/gitea/gitea.go | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/remote/gitea/gitea.go b/remote/gitea/gitea.go index 5fc9fba27..7bc017547 100644 --- a/remote/gitea/gitea.go +++ b/remote/gitea/gitea.go @@ -1,4 +1,5 @@ // Copyright 2018 Drone.IO Inc. +// Copyright 2021 Informatyka Boguslawski sp. z o.o. sp.k., http://www.ib.pl/ // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,6 +12,8 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +// +// This file has been modified by Informatyka Boguslawski sp. z o.o. package gitea @@ -229,15 +232,41 @@ func (c *client) Repos(u *model.User) ([]*model.Repo, error) { return nil, err } - all, _, err := client.ListMyRepos(gitea.ListReposOptions{}) - if err != nil { - return repos, err + // Gitea SDK forces us to read repo list paginated. + var page int = 1 + for { + all, _, err := client.ListMyRepos( + gitea.ListReposOptions{ + ListOptions: gitea.ListOptions{ + Page: page, + PageSize: 50, // Gitea SDK limit per page. + }, + }, + ) + + // Gitea SDK does not return error when asking for + // non existing repos page (empty list is returned) + // so this should be safe. + if err != nil { + return repos, err + } + + for _, repo := range all { + repos = append(repos, toRepo(repo, c.PrivateMode)) + } + + // Check if no more repos are available; we don't test len(all) < 50 + // because of Gitea SDK bug https://gitea.com/gitea/go-sdk/issues/507. + if len(all) == 0 { + // Empty page returned - finish loop. + break + } else { + // Last page was not empty so more repos may be available - continue loop. + page = page + 1 + } } - for _, repo := range all { - repos = append(repos, toRepo(repo, c.PrivateMode)) - } - return repos, err + return repos, nil } // Perm returns the user permissions for the named Gitea repository. From 3c4a4ccbb4621ee5b2f457f94091cda2a9d2864f Mon Sep 17 00:00:00 2001 From: Pawel Boguslawski Date: Mon, 29 Mar 2021 14:21:29 +0200 Subject: [PATCH 2/2] Company name fixed Company name fixed. Fixes: e96a17dc9e7db58256ad681001a99685f74f2a6f Author-Change-Id: IB#1107754 --- remote/gitea/gitea.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remote/gitea/gitea.go b/remote/gitea/gitea.go index 7bc017547..7780895a6 100644 --- a/remote/gitea/gitea.go +++ b/remote/gitea/gitea.go @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// This file has been modified by Informatyka Boguslawski sp. z o.o. +// This file has been modified by Informatyka Boguslawski sp. z o.o. sp.k. package gitea