@@ -200,7 +200,7 @@ function parse (args, opts) {
200200 setArg ( key , next )
201201 i ++
202202 } else {
203- setArg ( key , defaultForType ( guessType ( key , flags ) ) )
203+ setArg ( key , defaultValue ( key ) )
204204 }
205205 }
206206
@@ -220,7 +220,7 @@ function parse (args, opts) {
220220 setArg ( key , next )
221221 i ++
222222 } else {
223- setArg ( key , defaultForType ( guessType ( key , flags ) ) )
223+ setArg ( key , defaultValue ( key ) )
224224 }
225225 } else if ( arg . match ( / ^ - [ ^ - ] + / ) && ! arg . match ( negative ) ) {
226226 letters = arg . slice ( 1 , - 1 ) . split ( '' )
@@ -267,7 +267,7 @@ function parse (args, opts) {
267267 broken = true
268268 break
269269 } else {
270- setArg ( letters [ j ] , defaultForType ( guessType ( letters [ j ] , flags ) ) )
270+ setArg ( letters [ j ] , defaultValue ( letters [ j ] ) )
271271 }
272272 }
273273
@@ -293,7 +293,7 @@ function parse (args, opts) {
293293 setArg ( key , next )
294294 i ++
295295 } else {
296- setArg ( key , defaultForType ( guessType ( key , flags ) ) )
296+ setArg ( key , defaultValue ( key ) )
297297 }
298298 }
299299 }
@@ -749,6 +749,18 @@ function parse (args, opts) {
749749 } )
750750 }
751751
752+ // make a best effor to pick a default value
753+ // for an option based on name and type.
754+ function defaultValue ( key ) {
755+ if ( ! checkAllAliases ( key , flags . bools ) &&
756+ ! checkAllAliases ( key , flags . counts ) &&
757+ `${ key } ` in defaults ) {
758+ return defaults [ key ]
759+ } else {
760+ return defaultForType ( guessType ( key ) )
761+ }
762+ }
763+
752764 // return a default value, given the type of a flag.,
753765 // e.g., key of type 'string' will default to '', rather than 'true'.
754766 function defaultForType ( type ) {
@@ -763,7 +775,7 @@ function parse (args, opts) {
763775 }
764776
765777 // given a flag, enforce a default type.
766- function guessType ( key , flags ) {
778+ function guessType ( key ) {
767779 var type = 'boolean'
768780
769781 if ( checkAllAliases ( key , flags . strings ) ) type = 'string'
0 commit comments