MCPcopy Create free account
hub / github.com/cloudflare/computer / runPush

Function runPush

packages/computer/src/git/cli.ts:1441–1494  ·  view source on GitHub ↗
(
  client: GitClient,
  args: string[],
  input: GitCliInput,
)

Source from the content-addressed store, hash-verified

1439// ---------------------------------------------------------------
1440
1441async function runPush(
1442 client: GitClient,
1443 args: string[],
1444 input: GitCliInput,
1445): Promise<GitCliResult> {
1446 // `git push [<remote>] [<ref>] [--force] [--delete]`
1447 const parsed = parseFlags(args, {
1448 force: { kind: "bool", alias: ["f"] },
1449 delete: { kind: "bool", alias: ["d"] },
1450 });
1451 if ("error" in parsed) {
1452 return { stdout: "", stderr: `git push: ${parsed.error}\n`, exitCode: 129 };
1453 }
1454 if (parsed.positional.length > 2) {
1455 return {
1456 stdout: "",
1457 stderr: `git push: unexpected argument '${parsed.positional[2]}'\n`,
1458 exitCode: 129,
1459 };
1460 }
1461 const [first, second] = parsed.positional;
1462 const looksLikeUrl = first !== undefined && /^[a-z][a-z0-9+.-]*:\/\//.test(first);
1463 const url = looksLikeUrl ? first : undefined;
1464 const remote = looksLikeUrl ? undefined : first;
1465 const refspec = parsePushRefspec(looksLikeUrl ? second : (second ?? undefined));
1466
1467 if (url !== undefined && !isSupportedRemoteUrl(url)) {
1468 return {
1469 stdout: "",
1470 stderr: `git push: unsupported transport for '${url}'. Only https://, http://, and file:// are supported.\n`,
1471 exitCode: 1,
1472 };
1473 }
1474
1475 const dir = resolveDir(undefined, input.cwd);
1476 try {
1477 const result = await client.push({
1478 dir,
1479 url,
1480 remote,
1481 ref: refspec.ref,
1482 remoteRef: refspec.remoteRef,
1483 force: parsed.flags.force === true,
1484 delete: parsed.flags.delete === true,
1485 });
1486 if (!result.ok) {
1487 const err = result.error ?? "push rejected";
1488 return { stdout: "", stderr: `git push: ${err}\n`, exitCode: 1 };
1489 }
1490 return { stdout: "", stderr: "", exitCode: 0 };
1491 } catch (cause) {
1492 return mapGitError("push", cause);
1493 }
1494}
1495
1496function parsePushRefspec(ref: string | undefined): { ref?: string; remoteRef?: string } {
1497 if (ref === undefined) return {};

Callers 1

runGitCliFunction · 0.85

Calls 6

parsePushRefspecFunction · 0.85
isSupportedRemoteUrlFunction · 0.85
resolveDirFunction · 0.85
mapGitErrorFunction · 0.85
parseFlagsFunction · 0.70
pushMethod · 0.65

Tested by

no test coverage detected