@@ -52,7 +52,7 @@ export function prepareArguments<T extends CommandConfig = CommandConfig>(config
5252//https://regex101.com/r/vSqbuK/1
5353
5454 let name = config . name . replace ( / \[ \] / g, '__' )
55- let argumentPattern = / [ { | \[ ] ( .* ? ) [ } | \] ] / gm
55+ let argumentPattern = / [ { \[ ] ( .* ) [ } \] ] / gm
5656 if ( argumentPattern . test ( name ) ) {
5757 if ( name . match ( argumentPattern ) === null )
5858 return config
@@ -77,7 +77,7 @@ export function prepareArguments<T extends CommandConfig = CommandConfig>(config
7777 if ( hasAlias ) exp += '\\/(.*?)'
7878 if ( hasType ) exp += ':(.*?)'
7979 if ( isArray ) exp += '__'
80- if ( hasDefault ) exp += '='
80+ if ( hasDefault ) exp += '=(.*?) '
8181 if ( hasDesc ) exp += '@(.*?)'
8282 exp += '$'
8383
@@ -89,9 +89,14 @@ export function prepareArguments<T extends CommandConfig = CommandConfig>(config
8989 if ( hasAlias ) arg . alias = res [ $ ++ ] ;
9090 if ( hasType ) arg . type = res [ $ ++ ]
9191 if ( hasDefault ) arg . default = res [ $ ++ ]
92- if ( hasDesc ) arg . desc = res [ $ ++ ]
92+ if ( hasDesc ) arg . description = res [ $ ++ ]
9393 if ( isArray ) arg . variadic = true ;
9494
95+ if ( hasDefault ) {
96+ // console.dir({name, matches,original,exp,arg})
97+ arg . default = JSON . parse ( arg . default ) ;
98+ }
99+
95100 args . push ( arg ) ;
96101 } )
97102 config . arguments = args ;
@@ -205,21 +210,24 @@ export function parseArguments(argv_: string[], args: CommandArgumentConfig[] =
205210 let res = { } ;
206211 args . forEach ( arg => {
207212 let val : any = argv_ [ arg . position ] ;
208- // val = transformArgumentType<any>(val, arg);
209213
210214 if ( ! val && arg . required ) {
211215 invalid . push ( arg . name ) ;
212216 }
213- // val = transformArgumentType()
217+
214218 if ( arg . variadic ) {
215- if ( ! res [ arg . name ] ) {
216- res [ arg . name ] = [ val ] ;
217- } else {
218- res [ arg . name ] . push ( val )
219+ val = argv_ . slice ( arg . position , argv_ . length ) ;
220+ if ( arg . default && val . length === 0 ) {
221+ val = JSON . parse ( arg . default ) ;
219222 }
220- } else {
221- res [ arg . name ] = val ;
222223 }
224+
225+ if ( ! val && arg . default ) {
226+ val = JSON . parse ( arg . default )
227+ }
228+
229+ res [ arg . name ] = transformArgumentType ( val , arg ) ;
230+
223231 if ( arg . alias ) {
224232 res [ arg . alias ] = res [ arg . name ] ;
225233 }
0 commit comments