Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright Google LLC All Rights Reserved.
 | 
						|
 *
 | 
						|
 * Use of this source code is governed by an MIT-style license that can be
 | 
						|
 * found in the LICENSE file at https://angular.io/license
 | 
						|
 */
 | 
						|
import * as yargs from 'yargs';
 | 
						|
 | 
						|
import {info} from '../utils/console';
 | 
						|
 | 
						|
import {validateFile} from './validate-file';
 | 
						|
import {validateCommitRange} from './validate-range';
 | 
						|
 | 
						|
/** Build the parser for the commit-message commands. */
 | 
						|
export function buildCommitMessageParser(localYargs: yargs.Argv) {
 | 
						|
  return localYargs.help()
 | 
						|
      .strict()
 | 
						|
      .command(
 | 
						|
          'pre-commit-validate', 'Validate the most recent commit message', {
 | 
						|
            'file': {
 | 
						|
              type: 'string',
 | 
						|
              conflicts: ['file-env-variable'],
 | 
						|
              description: 'The path of the commit message file.',
 | 
						|
            },
 | 
						|
            'file-env-variable': {
 | 
						|
              type: 'string',
 | 
						|
              conflicts: ['file'],
 | 
						|
              description:
 | 
						|
                  'The key of the environment variable for the path of the commit message file.',
 | 
						|
              coerce: arg => {
 | 
						|
                const file = process.env[arg];
 | 
						|
                if (!file) {
 | 
						|
                  throw new Error(`Provided environment variable "${arg}" was not found.`);
 | 
						|
                }
 | 
						|
                return file;
 | 
						|
              },
 | 
						|
            }
 | 
						|
          },
 | 
						|
          args => {
 | 
						|
            const file = args.file || args.fileEnvVariable || '.git/COMMIT_EDITMSG';
 | 
						|
            validateFile(file);
 | 
						|
          })
 | 
						|
      .command(
 | 
						|
          'validate-range', 'Validate a range of commit messages', {
 | 
						|
            'range': {
 | 
						|
              description: 'The range of commits to check, e.g. --range abc123..xyz456',
 | 
						|
              demandOption: '  A range must be provided, e.g. --range abc123..xyz456',
 | 
						|
              type: 'string',
 | 
						|
              requiresArg: true,
 | 
						|
            },
 | 
						|
          },
 | 
						|
          argv => {
 | 
						|
            // If on CI, and not pull request number is provided, assume the branch
 | 
						|
            // being run on is an upstream branch.
 | 
						|
            if (process.env['CI'] && process.env['CI_PULL_REQUEST'] === 'false') {
 | 
						|
              info(`Since valid commit messages are enforced by PR linting on CI, we do not`);
 | 
						|
              info(`need to validate commit messages on CI runs on upstream branches.`);
 | 
						|
              info();
 | 
						|
              info(`Skipping check of provided commit range`);
 | 
						|
              return;
 | 
						|
            }
 | 
						|
            validateCommitRange(argv.range);
 | 
						|
          });
 | 
						|
}
 | 
						|
 | 
						|
if (require.main == module) {
 | 
						|
  buildCommitMessageParser(yargs).parse();
 | 
						|
}
 |