zephyr-agent
Version:
Zephyr plugin agent
56 lines (55 loc) • 1.58 kB
JavaScript
import "node:module";
import { execFile } from "node:child_process";
import { promisify } from "node:util";
import { getEmails } from "./utils.mjs";
const eas_execFile = promisify(execFile);
const EAS_ISSUER = 'https://expo.dev';
const GIT_TIMEOUT_MS = 10000;
const easCiIdentityProvider = {
provider: 'eas',
detect: isEasBuild,
infer: inferEasIdentity
};
function isEasBuild(env) {
return 'true' === env['EAS_BUILD'];
}
async function inferEasIdentity(env) {
const username = env['EAS_BUILD_USERNAME']?.trim() || void 0;
const emails = await readCommitEmails(env);
if (emails.length > 0) return {
provider: 'eas',
email: emails[0],
emails,
username,
source: 'git'
};
const providerSubject = username ?? env['EAS_BUILD_PROJECT_ID']?.trim();
if (!providerSubject) return;
return {
provider: 'eas',
issuer: EAS_ISSUER,
providerSubject,
username,
providerActorType: 'bot',
source: 'env'
};
}
async function readCommitEmails(env) {
const commit = env['EAS_BUILD_GIT_COMMIT_HASH']?.trim() || 'HEAD';
try {
const { stdout } = await eas_execFile('git', [
'show',
'-s',
'--format=%ae%n%ce',
commit
], {
cwd: env['EAS_BUILD_WORKINGDIR']?.trim() || process.cwd(),
timeout: GIT_TIMEOUT_MS
});
return getEmails(stdout.split('\n'));
} catch {
return [];
}
}
export { easCiIdentityProvider };
//# sourceMappingURL=eas.mjs.map