feat(version): commands tree and default usage #40
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✨ New Features
Hierarchical Command Tree
Introduced
CommandTree<T, S>andCommandNode<T, S>to manage commands in a prefix-tree (trie) structure:"parent.child.grandchild")findNode(base, rawArgs), which returns the deepest matching node and leftover argsremoveCommand(label, prune)) to either clear a single node or prune an entire subtreeImproved Default Usage Generation
Refactored
generateDefaultUsage(...)to display only a single level of subcommands alongside required and optional arguments:/parent child …)<sub1|sub2><arg>and optional args[opt]🛠 Changes & Migration Notes
Command Tree Replaces Flat Map
CommandTreeinternally.findNode(...)instead of a flatMap<String, Command>.Usage Format Update