Previously, `aio/aio-builds-setup/scripts/travis-preverify-pr.sh` was supposed to exit with 1 if a PR did not meet the preconditions and 2 if an error occurred during pre-verification. It relied on the exit codes of the node script that did the actual work, but didn't account for errors that would be thrown in the `sh` script itself (e.g. if the node script was not available). This caused such errors to appear as non-verified PRs, instead of real errors that should fail the build. This commit swaps the exit codes, so that now a 2 means non-verified PR and 1 designates an error.
		
			
				
	
	
		
			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: An error occurred.
 | |
|   // - 2: The PR author is not a member.
 | |
|   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, 2);
 | |
|       }
 | |
|     }).
 | |
|     catch(err => onError(err, 1));
 | |
| }
 | |
| 
 | |
| function onError(err: string, exitCode: number) {
 | |
|   console.error(err);
 | |
|   process.exit(exitCode || 1);
 | |
| }
 |