MCPcopy Create free account
hub / github.com/SIMARSINGHRAYAT/Gitzo / startCreatingPRs

Function startCreatingPRs

src/App.tsx:235–269  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

233 };
234
235 const startCreatingPRs = async () => {
236 if (!selectedRepo) return;
237 const vError = validatePRConfig(prTemplates); if (vError) { setError(vError); return; }
238 setStep(3); setIsCreating(true);
239 const items: CreatedItem[] = prTemplates.map(p => ({ id: p.id, title: p.title, type: 'prs', status: 'pending', branchName: p.branchName }));
240 setCreatedItems(items);
241 const owner = selectedRepo.owner.login; const repo = selectedRepo.name; const base = selectedRepo.default_branch;
242 try {
243 let baseSHA = await getDefaultBranchSHA(token, owner, repo, base);
244 for (let i = 0; i < prTemplates.length; i++) {
245 if (cancelRef.current) break;
246 const pr = prTemplates[i];
247 try {
248 setCreatedItems(prev => prev.map((ci, idx) => idx === i ? { ...ci, status: 'creating', substatus: 'Creating branch...' } : ci));
249 await createBranch(token, owner, repo, pr.branchName, baseSHA);
250 await createFileOnBranch(token, owner, repo, pr.branchName, pr.filePath, pr.fileContent, `Add ${pr.filePath}`);
251 const result = await createPullRequest(token, owner, repo, pr.title, pr.body, pr.branchName, base);
252 if (autoMerge) {
253 setCreatedItems(prev => prev.map((ci, idx) => idx === i ? { ...ci, status: 'merging', substatus: 'Merging...', url: result.html_url, number: result.number } : ci));
254 await waitForMergeable(token, owner, repo, result.number, 15, 1000);
255 await mergePullRequest(token, owner, repo, result.number, mergeMethod, 3);
256 if (deleteBranchAfterMerge) try { await deleteBranch(token, owner, repo, pr.branchName); } catch {}
257 setCreatedItems(prev => prev.map((ci, idx) => idx === i ? { ...ci, status: 'merged', merged: true, substatus: undefined, url: result.html_url, number: result.number } : ci));
258 try { await delay(500); baseSHA = await getDefaultBranchSHAWithRetry(token, owner, repo, base, baseSHA, 3, 1000); } catch {}
259 } else {
260 setCreatedItems(prev => prev.map((ci, idx) => idx === i ? { ...ci, status: 'success', url: result.html_url, number: result.number, substatus: undefined } : ci));
261 }
262 } catch (e: any) {
263 setCreatedItems(prev => prev.map((ci, idx) => idx === i ? { ...ci, status: 'error', error: e.message } : ci));
264 }
265 await delay(delayMs);
266 }
267 } catch (err: any) { setError(err.message); }
268 setIsCreating(false); setStep(4);
269 };
270
271 const startCreatingPairs = async () => {
272 if (!selectedRepo) return;

Callers 1

handleStartFunction · 0.85

Calls 10

getDefaultBranchSHAFunction · 0.90
createBranchFunction · 0.90
createFileOnBranchFunction · 0.90
createPullRequestFunction · 0.90
waitForMergeableFunction · 0.90
mergePullRequestFunction · 0.90
deleteBranchFunction · 0.90
validatePRConfigFunction · 0.85
delayFunction · 0.85

Tested by

no test coverage detected