- There's been no explicit support having argument void type
as you would not be able to use with annotation model but
surely can be wrapped as Type with CommandRegistration.
- For now change CommandInfoModel so that it uses empty string
which is i.e. expected in help options which are just
used as flags.
- It's outside of this commit to change parser to fail if
user gives an argument value for this type of options.
- Fixes#586
- Essentially this commit registeres on default `--help` and
`-h` options to every command and execution short circuits
in presense of help options to help command.
- Add Supplier<CommandRegistration.Builder> as a bean which
can be autowired registration beans.
- Make this common bean customisable via CommandRegistrationCustomizer.
- Change StandardMethodTargetRegistrar to use supplier so that
annotated commands gets common customizations.
- Change sample commands to use supplier.
- Add new group, spring.shell.help to config props.
- Docs changes
- Fixes#582
- Fixes#585
- Change sample build to use musl on linux
- Optionally remove version from jar so that
e2e tests don't need to use version in path.
- Add better matrix to e2e so that we're able to
build on one OS and then test with others.
- Fixes#576
- NOTE: very much wip and unstable
- This commit is a first step to provide boot style
@ShellTest annotation
- New modules spring-shell-test and spring-shell-test-autoconfigure
- Focus is to autoconfigure context without shell runners so that
we can create "sessions" and hook to configures jline terminal
with custom in/out streams.
- Skeleton fork from jediterm to provide basic terminal emulation
to part of a control amd escape characters working.
- ShellTestClient is a concept user can use to interact with a shell
in a same way user would use a "real" shell.
- Fixes#489
- Due to changes in #567 e2e tests started to fail as
args where passed with spaces instead of args array.
- Fix all args use so that spawn underneath uses
plain array with proper args.
- NonInteractiveShellRunner has a trouble where incoming
argument loses info about "quoted" string which is handled
by OS terminal.
- Add re-quoting in presense of a whitespace so that
jline parser can detect it correctly.
- Fixes#567
- New PatchSearch component
- Allow user to define base directory for search
- Show (using single select list) search results
- Allow user to define search string
- Implement algorithms(start with exact-match and fuzzy-match) from fuzzy search tool (fzf)
- Sample "component path search" and change "component path" to "component path input"
- Fixes#556
- CommandRegistration now has a structure to define
it beind hidden
- Modify relevant parts to filter out hidden commands
- Essentially command is hidden from all other than
command execution
- Sample in e2e tests
- Fixes#416
- BaseComponentContext has new field terminalWidth.
- StringToStyleExpressionRenderer contains new format
for "truncate-" prefixes and this is something
what template can use to instruct max length based
on terminal width.
- Change single/multi selectors to use this feature.
- Fixes#543
- Add exception handling around new interface CommandExceptionResolver
which allows to define a chain of resolvers to process errors before
exception is bubbled up to result handlers.
- Will be foundation to add more sophisticated error handling features
compared to what spring itself have for rest layer.
- Resolver returns CommandHandlingResult holder which further can be
used to make a choice what to print into console and if spesific exit
code should be used in non-interactive mode.
- Exception handling can be defined globally and per command giving
a change for user to customise i.e. error thrown by parser.
- CommandParserExceptionResolver replaces CommandParserExceptionsExceptionResultHandler
and provides more meaninful message for missing options.
- Fixes#503
- Modify CommandParser to convert given option value if its type is defined
- This change makes option default value to behave same as given value
what comes for the actual value in a CommandContext.
- Fixes#548
- Basically doing same what framework/boot does for jar manifests.
- Copied gradle settings from boot which gives us dot format like
Automatic-Module-Name: spring.shell.core
- Fixes#529