urfave / cli

A simple, fast, and fun package for building command line apps in Go
https://cli.urfave.org
MIT License
21.9k stars 1.69k forks source link

Fix variadic args #1865

Closed joshfrench closed 4 months ago

joshfrench commented 4 months ago

What type of PR is this?

What this PR does / why we need it:

Fixes the following:

Special notes for your reviewer:

If more arguments are defined after an unbounded argument, the end user may experience an error:

Arguments: []cli.Argument{
    &cli.StringArg{
        Name: "First",
        Max: -1,
    },
    &cli.StringArg{
        Name: "Second,
    },
}

After First is parsed, there will be no remaining args. If Second.Min == 0, it will just use its default/zero value. If Second.Min > 0, this will result in an insufficient arg count error. Both of those behaviors seem intuitive to me, but we could also add a runtime check and proactively error if an unbounded arg is defined as anything other than the last argument.

Testing

Unit tests updated with cases for variadic args.

Release Notes

Variadic args are now parsed correctly.