40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
// Imports
|
|
import {getEnvVar} from '../common/utils';
|
|
import {BuildVerifier} from './build-verifier';
|
|
|
|
// Run
|
|
_main();
|
|
|
|
// Functions
|
|
function _main() {
|
|
const secret = 'unused';
|
|
const githubToken = getEnvVar('AIO_GITHUB_TOKEN');
|
|
const repoSlug = getEnvVar('AIO_REPO_SLUG');
|
|
const organization = getEnvVar('AIO_GITHUB_ORGANIZATION');
|
|
const allowedTeamSlugs = getEnvVar('AIO_GITHUB_TEAM_SLUGS').split(',');
|
|
const pr = +getEnvVar('AIO_PREVERIFY_PR');
|
|
|
|
const buildVerifier = new BuildVerifier(secret, githubToken, repoSlug, organization, allowedTeamSlugs);
|
|
|
|
// Exit codes:
|
|
// - 0: The PR author is a member.
|
|
// - 1: The PR author is not a member.
|
|
// - 2: An error occurred.
|
|
buildVerifier.getPrAuthorTeamMembership(pr).
|
|
then(({author, isMember}) => {
|
|
if (isMember) {
|
|
process.exit(0);
|
|
} else {
|
|
const errorMessage = `User '${author}' is not an active member of any of the following teams: ` +
|
|
`${allowedTeamSlugs.join(', ')}`;
|
|
onError(errorMessage, 1);
|
|
}
|
|
}).
|
|
catch(err => onError(err, 2));
|
|
}
|
|
|
|
function onError(err: string, exitCode: number) {
|
|
console.error(err);
|
|
process.exit(exitCode || 1);
|
|
}
|