@@ -3,12 +3,29 @@ import type { CAC } from "cac";
3
3
import { ACTIVATION , gitUserOptions } from "@/config" ;
4
4
import {
5
5
execCommand ,
6
+ loadConfigModule ,
6
7
loggerInfo ,
7
8
printError ,
8
9
printInfo ,
9
10
printWarring ,
10
11
} from "@/helper" ;
11
12
13
+ const mergeConfig = async ( ) => {
14
+ const config = await loadConfigModule ( ) ;
15
+ const commands = config && config ?. commands ;
16
+ if ( commands && commands . gituser ) {
17
+ const { ruleName, ruleEmail } = commands . gituser ;
18
+ return {
19
+ ruleName : ruleName || gitUserOptions . ruleName ,
20
+ ruleEmail : ruleEmail || gitUserOptions . ruleEmail ,
21
+ } ;
22
+ }
23
+ return {
24
+ ruleName : gitUserOptions . ruleName ,
25
+ ruleEmail : gitUserOptions . ruleEmail ,
26
+ } ;
27
+ } ;
28
+
12
29
export async function setGitUserName ( name : string , ruleName : string ) {
13
30
if ( ACTIVATION ) {
14
31
loggerInfo (
@@ -97,27 +114,20 @@ export default function gitUserInstaller(cli: CAC) {
97
114
. alias ( "gitu" )
98
115
. option ( "-n, --name <name>" , "设置 user.name" )
99
116
. option ( "-e, --email <email>" , "设置 user.email" )
100
- . option ( "--rule-name <regexp>" , "设置 user.name 匹配规则(转义字符串)" , {
101
- default : gitUserOptions . ruleName ,
102
- } )
103
- . option (
104
- "--rule-email <regexp>" ,
105
- "设置 user.email 匹配规则(转义字符串)" ,
106
- {
107
- default : gitUserOptions . ruleEmail ,
108
- } ,
109
- )
117
+ . option ( "--rule-name <regexp>" , "设置 user.name 匹配规则(转义字符串)" )
118
+ . option ( "--rule-email <regexp>" , "设置 user.email 匹配规则(转义字符串)" )
110
119
. action ( async ( options ) => {
111
- const { name, email, ruleName, ruleEmail } = options ;
120
+ const { ruleName, ruleEmail } = await mergeConfig ( ) ;
121
+ const { name, email, ruleName : rName , ruleEmail : rEmail } = options ;
112
122
if ( ! name && ! email ) {
113
- await checkGitUserName ( ruleName ) ;
114
- await checkGitUserEmail ( ruleEmail ) ;
123
+ await checkGitUserName ( ruleName || rName ) ;
124
+ await checkGitUserEmail ( ruleEmail || rEmail ) ;
115
125
}
116
126
if ( name ) {
117
- await setGitUserName ( name , ruleName ) ;
127
+ await setGitUserName ( name , ruleName || rName ) ;
118
128
}
119
129
if ( email ) {
120
- await setGitUserName ( email , ruleEmail ) ;
130
+ await setGitUserName ( email , ruleEmail || rEmail ) ;
121
131
}
122
132
} ) ;
123
133
} ,
0 commit comments