feat(dev-infra): save invalid commit message attempts to be restored on next commit attempt (#38304)

When a commit message fails validation, rather than throwing out the commit message entirely
the commit message is saved into a draft file and restored on the next commit attempt.

PR Close #38304
This commit is contained in:
Joey Perrott
2020-07-30 14:01:03 -07:00
committed by Andrew Scott
parent afd4417a7b
commit ffd1691ba9
6 changed files with 110 additions and 1 deletions

View File

@ -9,6 +9,7 @@ import * as yargs from 'yargs';
import {info} from '../utils/console';
import {restoreCommitMessage} from './restore-commit-message';
import {validateFile} from './validate-file';
import {validateCommitRange} from './validate-range';
@ -16,6 +17,28 @@ import {validateCommitRange} from './validate-range';
export function buildCommitMessageParser(localYargs: yargs.Argv) {
return localYargs.help()
.strict()
.command(
'restore-commit-message-draft', false, {
'file-env-variable': {
type: 'string',
conflicts: ['file'],
required: true,
description:
'The key for the environment variable which holds the arguments for the ' +
'prepare-commit-msg hook as described here: ' +
'https://git-scm.com/docs/githooks#_prepare_commit_msg',
coerce: arg => {
const [file, source] = (process.env[arg] || '').split(' ');
if (!file) {
throw new Error(`Provided environment variable "${arg}" was not found.`);
}
return [file, source];
},
}
},
args => {
restoreCommitMessage(args.fileEnvVariable[0], args.fileEnvVariable[1]);
})
.command(
'pre-commit-validate', 'Validate the most recent commit message', {
'file': {