Skip to content

Commit

Permalink
fix: existing forks get deleted beforehand
Browse files Browse the repository at this point in the history
  • Loading branch information
gentlementlegen committed Feb 16, 2025
1 parent aa9645b commit 4686df3
Showing 1 changed file with 29 additions and 15 deletions.
44 changes: 29 additions & 15 deletions src/handlers/run-demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,30 +63,46 @@ async function createPullRequest({ payload, logger, userOctokit, userName }: Con
const sourceOwner = payload.repository.owner.login;
const newRepoName = `${sourceRepo}-${sourceOwner}`;

try {
const target = {
owner: userName,
repo: newRepoName,
};
// Check if fork already exists
await userOctokit.rest.repos.get(target);
logger.info("Fork already exists, will delete it.", { target });
await userOctokit.rest.repos.delete(target);
} catch (error) {
logger.error(`Could not check requested repo`, { error: error as Error });
const repos = await userOctokit.paginate(userOctokit.rest.repos.listForUser, {
username: userName,
});

for (const repo of repos) {
const { data } = await userOctokit.rest.repos.get({
owner: repo.owner.login,
repo: repo.name,
});
logger.debug("Checking existing fork", { url: data.html_url, parent: data.parent?.html_url });
if (data.fork && data.parent && data.parent.owner.login === sourceOwner && data.parent.name === sourceRepo) {
logger.info(`Found existing fork with name: ${data.parent.name}, will attempt deletion.`);
await userOctokit.rest.repos.delete({
owner: repo.owner.login,
repo: repo.name,
});
break;
}
}

logger.info(`Creating fork for user: ${userName}`);
logger.info(`Creating fork for user`, {
owner: sourceOwner,
repo: sourceRepo,
});

await userOctokit.rest.repos.createFork({
owner: sourceOwner,
repo: sourceRepo,
name: newRepoName,
});

logger.debug("Waiting for the fork to be ready...");
await new Promise((resolve) => setTimeout(resolve, 5000));

logger.debug(`Updating fork name to: ${newRepoName}`);
await userOctokit.rest.repos.update({
owner: userName,
repo: sourceRepo,
name: newRepoName,
});

const { data: repoData } = await userOctokit.rest.repos.get({
owner: sourceOwner,
repo: sourceRepo,
Expand Down Expand Up @@ -200,8 +216,6 @@ export async function handleLabel(context: Context<"issues.labeled">) {
const owner = payload.repository.owner.login;
const label = payload.label;

console.log(JSON.stringify(payload));

if (label?.name.startsWith("Price") && RegExp(/ubiquity-os-demo\s*/).test(repo)) {
logger.info("Handle pricing label set", { label });
await userOctokit.rest.issues.createComment({
Expand Down

0 comments on commit 4686df3

Please sign in to comment.