@@ -8,10 +8,12 @@ var fs = require('fs');
8
8
var child_process = require ( 'child_process' ) ;
9
9
var process$1 = require ( 'process' ) ;
10
10
var execa = require ( 'execa' ) ;
11
+ var prompts = require ( 'prompts' ) ;
11
12
12
13
function _interopDefaultLegacy ( e ) { return e && typeof e === 'object' && 'default' in e ? e : { 'default' : e } ; }
13
14
14
15
var execa__default = /*#__PURE__*/ _interopDefaultLegacy ( execa ) ;
16
+ var prompts__default = /*#__PURE__*/ _interopDefaultLegacy ( prompts ) ;
15
17
16
18
var name = "gacm" ;
17
19
var version = "1.1.3" ;
@@ -98,7 +100,7 @@ const warning = (msg) => console.log(`
98
100
${ kolorist . yellow ( PREFIX + msg ) }
99
101
` ) ;
100
102
const info = ( msg ) => console . log ( `
101
- ${ PREFIX + kolorist . blue ( msg ) }
103
+ ${ kolorist . blue ( PREFIX + msg ) }
102
104
` ) ;
103
105
const log = {
104
106
success,
@@ -107,11 +109,53 @@ const log = {
107
109
info
108
110
} ;
109
111
112
+ const insertUser = async ( name , email , alias = name ) => {
113
+ let userList = await getFileUser ( registriesPath ) ;
114
+ if ( ! userList )
115
+ userList = { version : "" , users : [ ] } ;
116
+ if ( ! userList . version )
117
+ userList = transformData ( userList ) ;
118
+ if ( isExistAlias ( userList . users , alias , name , email ) ) {
119
+ userList . users . forEach ( ( user ) => {
120
+ if ( user . alias === alias || ! user . alias && user . name === alias || name && email && user . name === name && user . email === email ) {
121
+ user . alias = alias === name ? user . alias ? user . alias : alias : alias ;
122
+ user . email = email ;
123
+ user . name = name ;
124
+ log . success ( `[update]:${ alias } ${ user . alias !== name ? `(${ user . name } )` : "" } ` ) ;
125
+ }
126
+ } ) ;
127
+ } else {
128
+ userList . users . push ( {
129
+ name,
130
+ email,
131
+ alias
132
+ } ) ;
133
+ log . success ( `[add]: ${ alias } ${ alias !== name ? `(${ name } )` : "" } ` ) ;
134
+ }
135
+ await writeFileUser ( registriesPath , userList ) ;
136
+ } ;
137
+ const transformData = ( data ) => {
138
+ const userInfo = { version : "" , users : [ ] } ;
139
+ Object . keys ( data ) . forEach ( ( x ) => {
140
+ userInfo . users . push ( {
141
+ name : data [ x ] . name ,
142
+ email : data [ x ] . email ,
143
+ alias : data [ x ] . name
144
+ } ) ;
145
+ } ) ;
146
+ return userInfo ;
147
+ } ;
148
+ const isExistAlias = ( users , alias , name , email ) => {
149
+ return users . some ( ( x ) => x . alias === alias || ! x . alias && x . name === alias || name && email && x . name === name && x . email === email ) ;
150
+ } ;
151
+
110
152
const { readFile, writeFile } = fs . promises ;
111
153
const getFileUser = async ( rootPath ) => {
112
154
if ( fs . existsSync ( rootPath ) ) {
113
155
const fileBuffer = await readFile ( rootPath , "utf-8" ) ;
114
- const userList = fileBuffer ? JSON . parse ( fileBuffer . toString ( ) ) : null ;
156
+ let userList = fileBuffer ? JSON . parse ( fileBuffer . toString ( ) ) : null ;
157
+ if ( userList && ! userList . version )
158
+ userList = transformData ( userList ) ;
115
159
return userList ;
116
160
}
117
161
return null ;
@@ -164,52 +208,10 @@ const printMessages = (messages) => {
164
208
console . log ( "\n" ) ;
165
209
} ;
166
210
167
- const insertUser = async ( name , email , alias = name ) => {
168
- let userList = await getFileUser ( registriesPath ) ;
169
- if ( ! userList )
170
- userList = { version : "" , users : [ ] } ;
171
- if ( ! userList . version )
172
- userList = transformData ( userList ) ;
173
- if ( isExistAlias ( userList . users , alias , name , email ) ) {
174
- userList . users . forEach ( ( user ) => {
175
- if ( user . alias === alias || ! user . alias && user . name === alias || name && email && user . name === name && user . email === email ) {
176
- user . alias = alias === name ? user . alias ? user . alias : alias : alias ;
177
- user . email = email ;
178
- user . name = name ;
179
- log . success ( `[update]:${ alias } ${ user . alias !== name ? `(${ user . name } )` : "" } ` ) ;
180
- }
181
- } ) ;
182
- } else {
183
- userList . users . push ( {
184
- name,
185
- email,
186
- alias
187
- } ) ;
188
- log . success ( `[add]: ${ alias } ${ alias !== name ? `(${ name } )` : "" } ` ) ;
189
- }
190
- await writeFileUser ( registriesPath , userList ) ;
191
- } ;
192
- const transformData = ( data ) => {
193
- const userInfo = { version : "" , users : [ ] } ;
194
- Object . keys ( data ) . forEach ( ( x ) => {
195
- userInfo . users . push ( {
196
- name : data [ x ] . name ,
197
- email : data [ x ] . email ,
198
- alias : data [ x ] . name
199
- } ) ;
200
- } ) ;
201
- return userInfo ;
202
- } ;
203
- const isExistAlias = ( users , alias , name , email ) => {
204
- return users . some ( ( x ) => x . alias === alias || ! x . alias && x . name === alias || name && email && x . name === name && x . email === email ) ;
205
- } ;
206
-
207
211
const useLs = async ( ) => {
208
- let userList = await getFileUser ( registriesPath ) || { } ;
212
+ const userList = await getFileUser ( registriesPath ) || { } ;
209
213
const currectUser = await execCommand ( "git" , [ "config" , "user.name" ] ) ;
210
214
const currectEmail = await execCommand ( "git" , [ "config" , "user.email" ] ) ;
211
- if ( ! userList . version )
212
- userList = transformData ( userList ) ;
213
215
if ( userList . users . length === 0 && ( ! currectUser || ! currectEmail ) ) {
214
216
return log . info ( "no user" ) ;
215
217
}
@@ -233,11 +235,9 @@ const useLs = async () => {
233
235
} ;
234
236
235
237
const useDelete = async ( name ) => {
236
- let userList = await getFileUser ( registriesPath ) ;
238
+ const userList = await getFileUser ( registriesPath ) ;
237
239
if ( ! userList )
238
240
return log . error ( `no user` ) ;
239
- if ( ! userList . version )
240
- userList = transformData ( userList ) ;
241
241
const useUser = userList . users . filter ( ( x ) => x . alias === name || ! x . alias && x . name === name ) ;
242
242
if ( useUser . length === 0 )
243
243
return log . error ( `${ name } not found` ) ;
@@ -262,8 +262,6 @@ const useAlias = async (origin, target) => {
262
262
let userList = await getFileUser ( registriesPath ) ;
263
263
if ( ! userList )
264
264
userList = { version : "" , users : [ ] } ;
265
- if ( ! userList . version )
266
- userList = transformData ( userList ) ;
267
265
let changed = false ;
268
266
userList . users . forEach ( ( x ) => {
269
267
if ( x . alias === origin ) {
@@ -281,31 +279,48 @@ const useAlias = async (origin, target) => {
281
279
await writeFileUser ( registriesPath , userList ) ;
282
280
} ;
283
281
284
- const useUse = async ( name , cmd ) => {
285
- let userList = await getFileUser ( registriesPath ) ;
282
+ const useUse = async ( [ name ] , cmd ) => {
283
+ const userList = await getFileUser ( registriesPath ) ;
286
284
if ( ! userList )
285
+ return log . error ( `no user exists` ) ;
286
+ let useUser = void 0 ;
287
+ if ( name ) {
288
+ useUser = userList . users . find ( ( x ) => x . alias === name ) ;
289
+ } else {
290
+ const { user } = await prompts__default [ "default" ] ( {
291
+ type : "select" ,
292
+ name : "user" ,
293
+ message : "Pick a account" ,
294
+ choices : userList . users . map ( ( x ) => {
295
+ return {
296
+ title : `${ x . alias } ${ x . alias === x . name ? "" : `(${ x . name } )` } ${ x . email } ` ,
297
+ value : x
298
+ } ;
299
+ } )
300
+ } ) ;
301
+ if ( useUser )
302
+ useUser = user ;
303
+ else
304
+ return log . error ( `user cancels operation` ) ;
305
+ }
306
+ if ( ! useUser )
287
307
return log . error ( `${ name } not found` ) ;
288
- if ( ! userList . version )
289
- userList = transformData ( userList ) ;
290
- if ( userList . users . every ( ( x ) => x . alias !== name ) )
291
- return log . error ( `${ name } not found` ) ;
292
- const useUser = userList . users . filter ( ( x ) => x . alias === name ) ;
293
308
let env = "local" ;
294
309
if ( cmd . system )
295
310
env = "system" ;
296
311
if ( cmd . global )
297
312
env = "global" ;
298
313
if ( cmd . local )
299
314
env = "local" ;
300
- await run ( `git config --${ env } user.name ${ useUser [ 0 ] . name } ` ) ;
301
- await run ( `git config --${ env } user.email ${ useUser [ 0 ] . email } ` ) ;
302
- log . success ( `git user changed [${ env } ]:${ useUser [ 0 ] . alias } ${ useUser [ 0 ] . alias !== useUser [ 0 ] . name ? `(${ useUser [ 0 ] . name } )` : "" } ` ) ;
315
+ await run ( `git config --${ env } user.name ${ useUser . name } ` ) ;
316
+ await run ( `git config --${ env } user.email ${ useUser . email } ` ) ;
317
+ log . success ( `git user changed [${ env } ]:${ useUser . alias } ${ useUser . alias !== useUser . name ? `(${ useUser . name } )` : "" } ` ) ;
303
318
} ;
304
319
305
320
const program = new commander . Command ( ) ;
306
321
program . option ( "-v, --version" , "\u67E5\u770B\u5F53\u524D\u7248\u672C" ) . usage ( "command <option>" ) . description ( "\u67E5\u770B\u5F53\u524D\u7248\u672C" ) . action ( useVersion ) ;
307
322
program . command ( "ls" ) . description ( "\u5F53\u524D\u7528\u6237\u5217\u8868" ) . action ( useLs ) ;
308
- program . command ( "use < name> " ) . option ( "-l, --local" , "\u5F53\u524D\u7528\u6237" ) . option ( "-g, --global" , "\u5168\u5C40\u7528\u6237" ) . option ( "-s, --system" , "\u7CFB\u7EDF\u7528\u6237" ) . description ( "\u5207\u6362\u7528\u6237" ) . action ( useUse ) ;
323
+ program . command ( "use [ name...] " ) . option ( "-l, --local" , "\u5F53\u524D\u7528\u6237" ) . option ( "-g, --global" , "\u5168\u5C40\u7528\u6237" ) . option ( "-s, --system" , "\u7CFB\u7EDF\u7528\u6237" ) . description ( "\u5207\u6362\u7528\u6237" ) . action ( useUse ) ;
309
324
program . command ( "add" ) . option ( "-n, --name <name>" , "\u7528\u6237\u540D\u79F0" ) . option ( "-e, --email <email>" , "\u7528\u6237\u90AE\u7BB1" ) . option ( "-a, --alias <alias>" , "\u7528\u6237\u522B\u540D" ) . description ( "\u6DFB\u52A0\u7528\u6237" ) . action ( useAdd ) ;
310
325
program . command ( "alias <origin> <target>" ) . description ( "\u6DFB\u52A0\u522B\u540D" ) . action ( useAlias ) ;
311
326
program . command ( "delete <name>" ) . description ( "\u5220\u9664\u7528\u6237" ) . action ( useDelete ) ;
0 commit comments