mirror of
https://github.com/amalgamated-tools/mirror-to-gitea.git
synced 2025-12-23 22:18:05 -05:00
add possibility to retrieve private repos
This commit is contained in:
@@ -1,13 +1,33 @@
|
||||
async function getRepositories(octokit, mirrorOptions) {
|
||||
const repos = await octokit
|
||||
.paginate("GET /users/:username/repos", { username: "jaedle" })
|
||||
const publicRepositories = await fetchPublicRepositories(
|
||||
octokit,
|
||||
mirrorOptions.username,
|
||||
);
|
||||
const privateRepos = mirrorOptions.privateRepositories
|
||||
? await fetchPrivateRepositories(octokit)
|
||||
: [];
|
||||
const repos = [...publicRepositories, ...privateRepos];
|
||||
|
||||
return mirrorOptions.skipForks ? withoutForks(repos) : repos;
|
||||
}
|
||||
|
||||
async function fetchPublicRepositories(octokit, username) {
|
||||
return octokit
|
||||
.paginate("GET /users/:username/repos", { username })
|
||||
.then(toRepositoryList);
|
||||
}
|
||||
|
||||
if (mirrorOptions.skipForks) {
|
||||
return repos.filter((repo) => !repo.fork);
|
||||
}
|
||||
async function fetchPrivateRepositories(octokit) {
|
||||
return octokit
|
||||
.paginate("GET /user/repos", {
|
||||
affiliation: "owner",
|
||||
visibility: "private",
|
||||
})
|
||||
.then(toRepositoryList);
|
||||
}
|
||||
|
||||
return repos;
|
||||
function withoutForks(repositories) {
|
||||
return repositories.filter((repo) => !repo.fork);
|
||||
}
|
||||
|
||||
function toRepositoryList(repositories) {
|
||||
|
||||
@@ -79,4 +79,86 @@ describe("get-github-repositories", () => {
|
||||
{ name: "repo3", url: "clone-url-of-repo3", private: false, fork: false },
|
||||
]);
|
||||
});
|
||||
|
||||
it("includes private repositories for user", async () => {
|
||||
const moctokit = new Moctokit();
|
||||
moctokit.rest.repos.listForUser({ username: "jaedle" }).reply({
|
||||
status: 200,
|
||||
data: [
|
||||
{
|
||||
name: "public-repo-1",
|
||||
clone_url: "clone-url-of-public-repo-1",
|
||||
private: false,
|
||||
fork: false,
|
||||
},
|
||||
{
|
||||
name: "public-repo-2",
|
||||
clone_url: "clone-url-of-public-repo-2",
|
||||
private: false,
|
||||
fork: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
moctokit.rest.repos
|
||||
.listForAuthenticatedUser({
|
||||
affiliation: "owner",
|
||||
visibility: "private",
|
||||
})
|
||||
.reply({
|
||||
status: 200,
|
||||
data: [
|
||||
{
|
||||
name: "private-repo-1",
|
||||
clone_url: "clone-url-of-private-repo-1",
|
||||
private: true,
|
||||
fork: false,
|
||||
},
|
||||
{
|
||||
name: "private-repo-2",
|
||||
clone_url: "clone-url-of-private-repo-2",
|
||||
private: true,
|
||||
fork: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const result = await get(
|
||||
new Octokit({
|
||||
auth: "a-github-token",
|
||||
}),
|
||||
{
|
||||
username: "jaedle",
|
||||
privateRepositories: true,
|
||||
skipForks: false,
|
||||
},
|
||||
);
|
||||
|
||||
expect(result).toEqual([
|
||||
{
|
||||
name: "public-repo-1",
|
||||
url: "clone-url-of-public-repo-1",
|
||||
private: false,
|
||||
fork: false,
|
||||
},
|
||||
{
|
||||
name: "public-repo-2",
|
||||
url: "clone-url-of-public-repo-2",
|
||||
private: false,
|
||||
fork: false,
|
||||
},
|
||||
{
|
||||
name: "private-repo-1",
|
||||
url: "clone-url-of-private-repo-1",
|
||||
private: true,
|
||||
fork: false,
|
||||
},
|
||||
{
|
||||
name: "private-repo-2",
|
||||
url: "clone-url-of-private-repo-2",
|
||||
private: true,
|
||||
fork: false,
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user