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