- In `CommandRegistration` add `ResolvableType` for `OptionSpec` giving
more spesific handling of a type.
- In `CommandParser` handle source and target types so that we
have generics with `List`, `Set` and arrays working better.
- In `HandlerMethodArgumentResolver` add better handling for
`ConversionService` for generic types.
- In `StandardMethodTargetRegistrar` add better types via `ResolvableType`
now that `CommandRegistration` support it.
- In `OptionConversionCommands` remove converter from `String` to `Set` as
now things should work as is if generic in a `Set` has a converter.
- Backport #694#699
- Fixes#700
- Better alignment for use of positional args without using
an option.
- Should work similarly with old parsing framework.
- Change position where missing options are checked.
- Fixes#701
- When target is set and only one option argument is given,
we should not convert to list as user expects string to xxx
Converter to work.
- This is how it used to work and previous changes caused
regression.
- Bug is actually in an old parser and new parser works fine.
- Fixes#667
- Previously CommandParser contained parser which was
scannerless type of brute force parsing of command
line args.
- Contract in that old parser wasn't super clear what
is its role with caller as it was given options
and registration was parsed in a Shell class.
- Add completely new parser package which has better
model and which will be much easier to modify for
future needs.
- Change some interfaces around parsing so that we do
as much in this new parsing model instead of pre-parsing
something in a Shell class.
- We also try to move away from using exceptions as
a message delivery which had its own problems. Instead
introducing parser messages which gives better info
when errors are detected.
- Add ParserConfig class which allows to expose settings
to change some parser features. Later this will be
exposed to user so that some features can be turned on/off
for an actual shell needs.
- Fixes#646
- ShellTest now has fields which can be used to
change terminal default widht/height.
- Backed by properties so can be used with
`spring.shell.test.terminal-width` and
`spring.shell.test.terminal-height`.
- Fixes#656
- Now lexing better with valid options
- Only report unrecognised option with double dash
as current parser don't have structure to do
deeper analysis.
- Fixes#651
- This is a first commit to add new annotation model
which eventually will replace old legacy annotations
like ShellComponent, ShellMethod, @ShellOption, etc.
- Adds subset of features needed for parity with manual
use of CommandRegistration.
- Relates #637
- Relates #638
- Relates #639
- Relates #640
- Relates #641