Added
- Subcommand support on
ArgParser.ArgParser subcommand(String name)registers a
named subcommand and returns its own independentArgParser, configured with the same
addFlag/addOptionbuilder methods as the top-level parser. ArgParser.parse(String[])now dispatches on the first argument when one or more
subcommands are registered: a match parses the remaining arguments against that
subcommand's own parser; an unrecognized name throwsArgParseException.ParsedArgs.subcommandName()/ParsedArgs.subcommand()expose the invoked subcommand's
name and its own, independently-parsed result.- A parser with no registered subcommands is completely unaffected — fully backwards
compatible with v1.1.0.
Tested
- Two subcommands registering an overlapping option name (
--port) with different shapes
(a value-taking option on one, a boolean flag on the other) parse independently, proving
no cross-contamination between subcommand registrations. - Parsing an unrecognized subcommand name throws
ArgParseExceptionnaming the bad token. - All existing tests continue to pass unmodified.
Docs
- New
## Subcommandssection in the README with a runnable deploy/rollback example. - A second worked example added to
## Usage.
See CHANGELOG.md for full details.