mirror of
				https://github.com/soybeanjs/soybean-admin.git
				synced 2025-11-04 07:43:42 +08:00 
			
		
		
		
	feat(packages): @sa/scripts: add ignore pattern list for command gitCommitVerify. close #504
				
					
				
			This commit is contained in:
		@@ -65,13 +65,15 @@ export async function gitCommit(lang: Lang = 'en-us') {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Git commit message verify */
 | 
					/** Git commit message verify */
 | 
				
			||||||
export async function gitCommitVerify(lang: Lang = 'en-us') {
 | 
					export async function gitCommitVerify(lang: Lang = 'en-us', ignores: RegExp[] = []) {
 | 
				
			||||||
  const gitPath = await execCommand('git', ['rev-parse', '--show-toplevel']);
 | 
					  const gitPath = await execCommand('git', ['rev-parse', '--show-toplevel']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const gitMsgPath = path.join(gitPath, '.git', 'COMMIT_EDITMSG');
 | 
					  const gitMsgPath = path.join(gitPath, '.git', 'COMMIT_EDITMSG');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const commitMsg = readFileSync(gitMsgPath, 'utf8').trim();
 | 
					  const commitMsg = readFileSync(gitMsgPath, 'utf8').trim();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (ignores.some(regExp => regExp.test(commitMsg))) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const REG_EXP = /(?<type>[a-z]+)(?:\((?<scope>.+)\))?(?<breaking>!)?: (?<description>.+)/i;
 | 
					  const REG_EXP = /(?<type>[a-z]+)(?:\((?<scope>.+)\))?(?<breaking>!)?: (?<description>.+)/i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!REG_EXP.test(commitMsg)) {
 | 
					  if (!REG_EXP.test(commitMsg)) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,17 @@ const defaultOptions: CliOption = {
 | 
				
			|||||||
    '!node_modules/**'
 | 
					    '!node_modules/**'
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  ncuCommandArgs: ['--deep', '-u'],
 | 
					  ncuCommandArgs: ['--deep', '-u'],
 | 
				
			||||||
  changelogOptions: {}
 | 
					  changelogOptions: {},
 | 
				
			||||||
 | 
					  gitCommitVerifyIgnores: [
 | 
				
			||||||
 | 
					    /^((Merge pull request)|(Merge (.*?) into (.*?)|(Merge branch (.*?)))(?:\r?\n)*$)/m,
 | 
				
			||||||
 | 
					    /^(Merge tag (.*?))(?:\r?\n)*$/m,
 | 
				
			||||||
 | 
					    /^(R|r)evert (.*)/,
 | 
				
			||||||
 | 
					    /^(amend|fixup|squash)!/,
 | 
				
			||||||
 | 
					    /^(Merged (.*?)(in|into) (.*)|Merged PR (.*): (.*))/,
 | 
				
			||||||
 | 
					    /^Merge remote-tracking branch(\s*)(.*)/,
 | 
				
			||||||
 | 
					    /^Automatic merge(.*)/,
 | 
				
			||||||
 | 
					    /^Auto-merged (.*?) into (.*)/
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export async function loadCliOptions(overrides?: Partial<CliOption>, cwd = process.cwd()) {
 | 
					export async function loadCliOptions(overrides?: Partial<CliOption>, cwd = process.cwd()) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,8 +75,8 @@ export async function setupCli() {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    'git-commit-verify': {
 | 
					    'git-commit-verify': {
 | 
				
			||||||
      desc: 'verify git commit message, make sure it match Conventional Commits standard',
 | 
					      desc: 'verify git commit message, make sure it match Conventional Commits standard',
 | 
				
			||||||
      action: async () => {
 | 
					      action: async args => {
 | 
				
			||||||
        await gitCommitVerify();
 | 
					        await gitCommitVerify(args?.lang, cliOptions.gitCommitVerifyIgnores);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    changelog: {
 | 
					    changelog: {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,4 +26,6 @@ export interface CliOption {
 | 
				
			|||||||
   * @link https://github.com/soybeanjs/changelog
 | 
					   * @link https://github.com/soybeanjs/changelog
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  changelogOptions: Partial<ChangelogOption>;
 | 
					  changelogOptions: Partial<ChangelogOption>;
 | 
				
			||||||
 | 
					  /** The ignore pattern list of git commit verify */
 | 
				
			||||||
 | 
					  gitCommitVerifyIgnores: RegExp[];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user