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 */
 | 
			
		||||
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 gitMsgPath = path.join(gitPath, '.git', 'COMMIT_EDITMSG');
 | 
			
		||||
 | 
			
		||||
  const commitMsg = readFileSync(gitMsgPath, 'utf8').trim();
 | 
			
		||||
 | 
			
		||||
  if (ignores.some(regExp => regExp.test(commitMsg))) return;
 | 
			
		||||
 | 
			
		||||
  const REG_EXP = /(?<type>[a-z]+)(?:\((?<scope>.+)\))?(?<breaking>!)?: (?<description>.+)/i;
 | 
			
		||||
 | 
			
		||||
  if (!REG_EXP.test(commitMsg)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,17 @@ const defaultOptions: CliOption = {
 | 
			
		||||
    '!node_modules/**'
 | 
			
		||||
  ],
 | 
			
		||||
  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()) {
 | 
			
		||||
 
 | 
			
		||||
@@ -75,8 +75,8 @@ export async function setupCli() {
 | 
			
		||||
    },
 | 
			
		||||
    'git-commit-verify': {
 | 
			
		||||
      desc: 'verify git commit message, make sure it match Conventional Commits standard',
 | 
			
		||||
      action: async () => {
 | 
			
		||||
        await gitCommitVerify();
 | 
			
		||||
      action: async args => {
 | 
			
		||||
        await gitCommitVerify(args?.lang, cliOptions.gitCommitVerifyIgnores);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    changelog: {
 | 
			
		||||
 
 | 
			
		||||
@@ -26,4 +26,6 @@ export interface CliOption {
 | 
			
		||||
   * @link https://github.com/soybeanjs/changelog
 | 
			
		||||
   */
 | 
			
		||||
  changelogOptions: Partial<ChangelogOption>;
 | 
			
		||||
  /** The ignore pattern list of git commit verify */
 | 
			
		||||
  gitCommitVerifyIgnores: RegExp[];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user