This avoids incorrectly failing the build if the PR author is not a member of one of the whitelisted GitHub teams.
		
			
				
	
	
		
			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);
 | |
| }
 |