- Change defaults for `spring.shell.interactive.enabled` and
`spring.shell.script.enabled` to false.
- Change samples to use interactive/script where applicable.
- Fixes#1051
- Modifies ViewComponent with changed api's so that
it can be executed with a thread allowing caller
not to block.
- Add ViewComponentBuilder concept and create is as
a bean similar to TerminalUIBuilder.
- Relates #997
- ApplicationConversionService extends FormattingConversionService
and defines some additional default converters like
StringToFileConverter which makes `script` command work
under native with given file type option.
- Fixes#960
- Disable jni terminal provider in test ShellAutoConfiguration
like it's done for jna/jansi
- Default TerminalBuilder system outpu to SysOut to restore
writing to stdout instead of stderr when redirect exists
- Relates #891
- Relates #901
- Add TerminalUIBuilder which can be used to build TerminalUI
- Add TerminalUICustomizer which can customize TerminalUI
- What is autoconfigured is TerminalUIBuilder.
- In TerminalUI add configure for views which now allows
easier way to set needed stuff in views.
- Various changes in a catalog app
- Fixes#900
- NonInteractiveShellRunner can now shortcircuit into primary command
just running it and passing args.
- Add hooks into autoconfig so that this is easy to configure.
- Relates #755
- New OptionMethodArgumentResolver which is similar
than ShellOptionMethodArgumentResolver for @ShellOption.
- Add missing annotation commands for e2e test command.
- Fixes#767
- New OptionNameModifier which is just a Function<String,String> to
modify a name.
- Can be defined per option in CommandRegistration.
- Can be defined as global default as bean.
- Default implementation for common case types is enabled via boot's
config props under spring.shell.option.naming.case-type
- Support facilities for camel, kebab, snake and pascal conversions.
- Fixes#621
- 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
- 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
- Use same interface type in a generic interactive completions
in a method level and option value level.
- Change CompletionResolver to have same function signature
as with options and use CompletionContext to keep
relevant information.
- Fixes#449
- This is a re-implementation of a interactive completion
with breaking changes as it moves away from a direct use
of a MethodParameter in favour of a CommandRegistration
and its option definitions.
- Fixes#449
- Add theme settings for figures.
- Settings for styles are now in it own class and
ThemeSettings are wrapping those.
- Prefixed formatting string to have `style-` prefix.
- Templates can now use added `figures` dictionary which
is resolved per activated theme.
- Create `dump` theme.
- New `ThemeActive` interface where default impl uses dump
theme if `CI` or `NO_COLOR` env is set.
- Rework existing templates.
- Fixes#442
- Add ShellConversionServiceSupplier interface to define
shell spesific ConversionService so that we don't
get trouble with other services in boot.
- Fixes#435
- New configurations to CommandRegistration
- Re-using exit code concepts from boot
- Handling exit codes only in non-interactive mode
- Adding e2e commands and tests for better coverage
- Fixes#431
- Change help command output to get templated using
model classes.
- Remove things around ParameterDescription as those are
replaced with template classes.
- Fixes for native configs.
- For now availability and aliases are removed from
help to get back in better form.
- Aliases has been partly introduced to structure.
- Fixes#422
- Change parser to user conversion service to attempt
conversion from a default value to an expected type.
- Make more use of shellConversionService bean so that
we use the one which can be customized.
- UserConfigPathProvider interface to provid "user-level"
config directory which can be used within a shell.
- New options which can be used to configure behaviour.
spring.shell.history.enabled
spring.shell.history.name
spring.shell.config.location
spring.shell.config.env
- Fixes#417
- Now using qualifier for one we expect which should
work if some other services are in a context.
- Properly use shellConversionService in defined
MethodArgumentResolver beans.
- Fixes#400
- Focus of these changes are to introduce a new command system based on
real registrations (new way) instead of continuously (old way) resolve
methods and its parameters via reflection.
- There's a lot of changes as this resolution via reflection had its
hooks almost everywhere and thus most changes are just refactorings.
- Order to understand real changes I'd start to look classes under
`org.springframework.shell.command` package as it defines new registration,
catalog and parser classes. Also samples contain new classes to demonstrate
new functionality.
- Fixes#380
- To not clash with exchangeStrategiesCustomizer bean name from boot
change it to shellCommonComponentFlowCustomizer.
- This was a typical copy/pasting mistake.
- ComponentFlowAutoConfiguration which creates a builder bean
and configures ComponentFlowCustomizer to set needed
defaults for terminal, resource loader and template executor.
- Fixes#387
Also:
* Rename ThemeResolver bean to avoid clash w/ Spring Boot registered ThemeResolver
* Move shell runner precedence to public static field to allow extension/access
- New option spring.shell.command.help.grouping-mode which can be either flat/group.
- Build-in help command can now choose if to group command or just show flat list.
- Fixes#347
- Add new styling system which works around concept that
you use tags to request jline styles where tags comes
from an activated theme.
- There is a default theme with options to add custom
ones and change it via property.
- Add templating system which uses antlr stringtemplate which
allows to write output with a template instead of manually
crafting code.
- Add version command which integrates to Boot's BuildProperties
and GitProperties. Only version field is visible on default
and others can be enabled/disable via properties.
- Fixes#352
- Fixes#353
- 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