import { execSync } from "child_process"; import envCi from "env-ci"; export function inferBuildInfo({ baseBranch }: { baseBranch?: string } = {}) { const ciEnv = envCi(); let repoName, repoOwner, commitHash, commitBranch, buildTitle; if (ciEnv.slug) { const slugParts = ciEnv.slug.split("/"); if (slugParts.length === 2) { repoOwner = slugParts[0]; repoName = slugParts[1]; } } let ciEnvCommitBranch = ciEnv.isPr ? ciEnv.prBranch : ciEnv.branch; if (ciEnv.commit) { commitHash = ciEnv.commit; } if (ciEnvCommitBranch) { commitBranch = ciEnvCommitBranch; } if (!baseBranch && ciEnv.isPr && ciEnv.branch) { baseBranch = ciEnv.branch; } if (ciEnv.isCi && commitHash) { try { const output = execSync( `git log --format=oneline -n 1 ${commitHash}`, ).toString(); const commitHashRegex = /[0-9a-z]{20}[0-9a-z]+/; if (commitHashRegex.test(output)) { const commitMessage = output.replace(commitHashRegex, "").trim(); buildTitle = commitMessage; } } catch (err: any) {} // eslint-disable-line @typescript-eslint/no-unused-vars } return { repoName, repoOwner, commitHash, commitBranch, buildTitle, }; }