Skip to content

Default value of false doesn't work for narg: { flag: 0 } #418

@D-Pow

Description

@D-Pow

yargs-parser doesn't seem to work when a boolean flag is defaulted to false and then activated from the args string. For example:

const YargsParser = require('yargs-parser');

YargsParser('-a hello -b world', {
    narg: {
        a: 1,
        b: 0,
    },
    default: {
        b: false,
    },
    alias: {
        blah: [ 'b', 'bl' ],
    },
});


// expected output
{
    _: ['world'],
    a: 'hello',
    blah: true,
    b: true,
    bl: true
}


// actual output
{
    _: ['world'],
    a: 'hello',
    blah: false,
    b: false,
    bl: false
}

If I explicitly marked it as boolean: true, it seems to work as expected. However, the problem is if the option/yargs-parser configuration had boolean replaced with narg to allow the flag value to be of multiple types (falling back to a boolean if no value given), then setting it solely as boolean will break the functionality of the other values it could be.

Admittedly, parsedArgs.b would be undefined if it weren't defaulted which is still falsey, but this still came as a surprise to me since narg: { blah: 0 } should be enough to mark it as a boolean. It's not the end of the world but would be nice to not have this gotcha present in the parser that breaks if the user happens to add a default value of false.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions