parser icon indicating copy to clipboard operation
parser copied to clipboard

Can't pass an empty string flag

Open dkundel opened this issue 6 years ago • 2 comments

Hi there,

I have an issue that faced in https://github.com/twilio-labs/plugin-serverless where present string flags without any value don't work.

For example, this doesn't work:

twilio serverless:start --inspect

This works however:

twilio serverless:start --inspect=""

The problem seems to be here because if nothing else is being passed the last value will be undefined. If something else is passed it will be turned into the value.

For now the workaround for me is to add an empty string to the back of argv but this doesn't seem to be a good solution.

Update: in fact this doesn't even work. The fix instead is a documentation one for now to mention to pass an empty string

dkundel avatar Jul 12 '19 23:07 dkundel

This seems like intended behavior, no? If it's a boolean flag, it should have no value. if it's a string flag, it should have a value. I'm not sure they support a flag that acts as both.

xavdid avatar Aug 01 '19 15:08 xavdid

They currently don't support one but it's common behavior. Example from Node.js: https://nodejs.org/api/cli.html#cli_inspect_host_port

In yargs the behavior is the following for string flags:

  • flag not passed => default value if available or undefined
  • flag passed but no value => '' aka empty string
  • flag passed with value => set to value

dkundel avatar Aug 02 '19 01:08 dkundel