v3: yield the version flag's -v alias to a user-defined flag#2330
Conversation
|
@c-tonneslan Can you rebase off main and fix test cov ? |
Review Summary1.
|
The default version flag carries -v as an alias. A user-defined flag
that also wants -v (canonical case: --verbose / -v) wasn't actually
broken at parse time: -v ended up setting the user flag. But
checkVersion went through cmd.Bool, which resolves aliases, so it
asked for the value of "v" and got back the user flag's value. The
end result: -v was silently treated as "print version and exit".
Two changes, both narrow:
- During root setup, drop any aliases from the local copy of the
version flag that are already claimed by a user-defined flag's
name or alias. Keeps the user flag the sole owner of the
short form.
- checkVersion now looks for the actual version flag attached to
the command (matching against the canonical primary name from
the global VersionFlag) and checks its IsSet directly, so it
can't be fooled by a same-named alias on a different flag.
Fixes urfave#2229.
Signed-off-by: Charlie Tonneslan <cst0520@gmail.com>
9180b31 to
54d38c9
Compare
|
Rebased on main, conflict is gone. Addressed the review:
|
Fixes #2229.
The default version flag carries `-v` as an alias. A user-defined flag that also wants `-v` (canonical case: `--verbose / -v`) wasn't actually broken at parse time: `-v` ended up setting the user flag. But `checkVersion` went through `cmd.Bool`, which resolves aliases, so it asked for the value of `"v"` and got back the user flag's value. The end result: passing `-v` was silently treated as "print version and exit."
Two narrow changes:
Added `TestVersionFlagYieldsAliasToUserFlag` covering the reporter's reproducer.