UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 1.32 kB
import{join}from"node:path";import{execFile}from"node:child_process";import{rm}from"node:fs/promises";import{promisify}from"node:util";const GIT_TIMEOUT_MS=5e3,runFile=promisify(execFile);async function commandSucceeds(e,t,n){try{let r={timeout:GIT_TIMEOUT_MS,windowsHide:!0};return n!==void 0&&(r.cwd=n),await runFile(e,[...t],r),!0}catch{return!1}}function isGitAvailable(){return commandSucceeds(`git`,[`--version`])}async function isInsideExistingRepository(e){return await commandSucceeds(`git`,[`rev-parse`,`--is-inside-work-tree`],e)||await commandSucceeds(`hg`,[`--cwd`,`.`,`root`],e)}function hasConfiguredDefaultBranch(e){return commandSucceeds(`git`,[`config`,`init.defaultBranch`],e)}async function runGit(e,t){await runFile(`git`,[...t],{cwd:e,timeout:GIT_TIMEOUT_MS,windowsHide:!0})}async function tryInitializeGit(t){if(!await isGitAvailable()||await isInsideExistingRepository(t))return{kind:`skipped`};let r=!1;try{return await runGit(t,[`init`]),r=!0,await hasConfiguredDefaultBranch(t)||await runGit(t,[`checkout`,`-b`,`main`]),await runGit(t,[`add`,`-A`]),await runGit(t,[`commit`,`-m`,`Initial commit from eve`]),{kind:`initialized`}}catch(i){return r&&await rm(join(t,`.git`),{recursive:!0,force:!0}).catch(()=>{}),{kind:`failed`,reason:i instanceof Error?i.message:String(i)}}}export{tryInitializeGit};