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);
 | 
						|
}
 |