node-dashdash icon indicating copy to clipboard operation
node-dashdash copied to clipboard

bug: dashdash doesn't check if default values match the type of arg

Open ORESoftware opened this issue 6 years ago • 2 comments

Say I have this:

const opts = [
 {
    names: ['force', 'f'],
    type: 'bool',
    help: 'Force everything (and say yes to everything).',
    default: 'foobar'  // should be a boolean, but we give a string
  }
]

last time I checked, dashdash will not complain.

I am guessing that this would also fly, etc:

const opts = [
 {
    names: ['force', 'f'],
    type: 'string',
    help: 'Force everything (and say yes to everything).',
    default:  [1,2,3]  // should be a string, but we have an array of numbers instead
  }
]

the type of the default value should match the type? Or perhaps at least log a warning?

ORESoftware avatar Apr 19 '18 06:04 ORESoftware

@ORESoftware How is this different from #23 ?

karfau avatar Jan 31 '20 15:01 karfau

I'll note that the current types (@types/[email protected] at time of writing) indicate that default should be string | undefined, which suggests the option default is pre-parsing?

If that's the case, I'm not sure if you'd be expected to write, say, default: "false" for a boolean (though I'd guess this is a trivial example).

Not sure whether to comment on both issues...

robations avatar Dec 21 '23 19:12 robations