- Add new ShellContext concept which now is just a way
to stash info about interaction mode where ShellRunner
can update supported mode.
- ShellMethod has a new field interactionMode which user
can use to define commands between interactive/non-interactive
modes which then prevents CommandRegistry to show
commands at runtime.
- Fixes#345
- Add support for running shell commands as a non-interactive mode.
- This works by adding new ShellApplicationRunner interface which is
an extension to ApplicationRunner forcing to have exactly one main
ApplicationRunner and then DefaultApplicationRunner dispatches to
new interface ShellRunner which allows to pick between script,
interactive and non-interactive, etc.
- It is sort of a breaking change but works much better not having
a need to have previous hooks between application runners to disable
things at runtime.
- All this makes it closer for a user to have a choice between
using shell commands as is without entering interactive mode.
- Also add SpringShellProperties for better config props support
for boot users.
- Fixes#342
- Shuffle things around into different auto-config and configuration
classes and use other tricks like ObjectProvider to work around
boot 2.6.x imposing bean cycle checks.
- This is first set of changes to work around this issue, not
to make things perfect. Further refactoring work is needed
making code base more boot 2.x friendly as things are based
on boot 1.5.x times.
- Fixes#324
- Migrate tests to junit5 and assertj as those
are on a classpath automatically.
- Temporarily use spring.main.allow-circular-references=true
to allow time for fixes to remove cycles.
Just like spring-shell/spring-shell-samples shows examples of Spring
Shell features, create a project with samples of Spring Shell unit,
functional and integration tests.
Issue: SHL-192
https://jira.spring.io/browse/SHL-192