Skip to content

Commit ea7423d

Browse files
committed
feat(cli): add czg --alias can directly submit the defined commit message
link #43
1 parent aa42db3 commit ea7423d

5 files changed

Lines changed: 45 additions & 13 deletions

File tree

‎packages/cli/src/generator/czg.ts‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { CommitizenType, prompter, style } from "cz-git";
22
import inquirer from "inquirer";
33
import { commit } from "./commit";
4-
import { isGitClean, getGitRootPath, injectEnv } from "../shared";
4+
import { isGitClean, getGitRootPath, injectEnvFlag, injectEnvValue } from "../shared";
55
import type { CzgitParseArgs } from "../shared";
66

77
/**
@@ -25,9 +25,10 @@ export const czg = (version: string, argvs: CzgitParseArgs, environment: any = {
2525
)} ?`
2626
);
2727
}
28-
injectEnv("break", argvs.czgitArgs.subCommand?.break);
29-
injectEnv("emoji", argvs.czgitArgs.subCommand?.emoji);
30-
injectEnv("checkbox", argvs.czgitArgs.subCommand?.checkbox);
28+
injectEnvFlag("break", argvs.czgitArgs.subCommand?.break);
29+
injectEnvFlag("emoji", argvs.czgitArgs.subCommand?.emoji);
30+
injectEnvFlag("checkbox", argvs.czgitArgs.subCommand?.checkbox);
31+
injectEnvValue("cz_alias", argvs.czgitArgs.flag?.alias);
3132

3233
console.log(`czg@${version}\n`);
3334
// commit

‎packages/cli/src/shared/types/czg.ts‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
export type CzgitFlagList = "config" | "version" | "help" | "reback" | "retry" | "yes" | "hook";
1+
export type CzgitFlagList =
2+
| "config"
3+
| "version"
4+
| "help"
5+
| "reback"
6+
| "retry"
7+
| "yes"
8+
| "hook"
9+
| "alias";
210
export type CzgitCommonFlag = {
311
/** option: --version|-v */
412
version?: boolean;
@@ -9,6 +17,8 @@ export type CzgitCommonFlag = {
917
export type CzgitFlag = {
1018
/** option: --config="xxx" */
1119
config?: string;
20+
/** option: --alias="xxx" */
21+
alias?: string;
1222
/** option: --reback|-b */
1323
reback?: boolean;
1424
/** option: --retry|-r */
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* provide environment flag variable to cz-git
3+
*/
4+
export const injectEnvFlag = (key: string, target?: boolean) => {
5+
if (target) process.env[key] = "1";
6+
};
7+
8+
/**
9+
* provide environment flag value to cz-git
10+
*/
11+
export const injectEnvValue = (key: string, target?: string) => {
12+
if (target) process.env[key] = target;
13+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from "./cache";
2+
export * from "./env";
23
export * from "./git";
34
export * from "./parse";

‎packages/cli/src/shared/utils/parse.ts‎

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ const resovleFlag = (
3838
return target;
3939
};
4040

41+
const resovleAlias = (arg: string, target: CzgitParseArgs) => {
42+
if (/^:/.test(arg)) {
43+
if (!target.czgitArgs.flag) {
44+
target.czgitArgs.flag = { alias: "" };
45+
}
46+
target.czgitArgs.flag.alias = arg.slice(1);
47+
deleteItem(arg, target.gitArgs);
48+
}
49+
return target;
50+
};
51+
4152
/**
4253
* resovle process.argv by minimist
4354
* @param {ParsedArgs} argv
@@ -62,13 +73,15 @@ export const resovleArgs = (argv: string[]): CzgitParseArgs => {
6273
gitArgs: argv
6374
};
6475

65-
// resolve subcmd
6676
if (parseArgv._.length !== 0) {
6777
for (let i = 0; i < parseArgv._.length; i++) {
78+
// resolve subcmd
6879
result = resovleSubCmd(parseArgv._[i], "init", result);
6980
result = resovleSubCmd(parseArgv._[i], "emoji", result);
7081
result = resovleSubCmd(parseArgv._[i], "checkbox", result);
7182
result = resovleSubCmd(parseArgv._[i], "break", result);
83+
// resolve alias
84+
result = resovleAlias(parseArgv._[i], result);
7285
}
7386
}
7487
// resolve flag
@@ -79,13 +92,7 @@ export const resovleArgs = (argv: string[]): CzgitParseArgs => {
7992
result = resovleFlag(parseArgv, "version", "version", result);
8093
result = resovleFlag(parseArgv, "hook", "hook", result);
8194
result = resovleFlag(parseArgv, "config", "config", result);
95+
result = resovleFlag(parseArgv, "alias", "alias", result);
8296

8397
return result;
8498
};
85-
86-
/**
87-
* provide environment variable to cz-git
88-
*/
89-
export const injectEnv = (key: string, target?: boolean) => {
90-
if (target) process.env[key] = "1";
91-
};

0 commit comments

Comments
 (0)