- Add functions to calculate Rectangle for fullscreen/nonfullscreen modes.
- Fixes for rendering so that nonfullscreen works better with views.
- Add some basic samples
- isEmpty method for Rectangle
- Fixes#872
- ListView can be defined to use nocheck, checked or radio
- List can now scroll through up/down
- Actual visual is handled in a DefaultListCell
- Modify/add scenarios and catalog app
- Relates #865
- ViewComponent can take view and drive it as non-fullscreen
- ViewDoneEvent which InputView now uses
- ComponentUiCommands is a sample where we add ideas for
views in flow components
- Allow View to set eventloop
- Relates #850
- New WindowView which can be partially atop of background.
- DialogView now extends WindowView
- Change dialog in Catalog sample and Dialog scenario
- Relates #825
- Relates #855
- Duplicate keyhandler into hotkeyhandler
- Define some view to handle hot keys, like AppView and MenuBarView
- Catalog app binds some menus to hot keys
- Bind all normal keys a-z with alt
- Relates #823
- Relates #826
- Control is now aware of active theme name and resolver.
- Theme some settings in BoxView, ListView and MenuView.
- Overhaul scenario system to make it work with themes.
- Add new "background" StyleSetting.
- Relates #824
- Can clear items from a GridView
- Full refactor for AppView now using GridView internally
and can hide/show menu/status.
- Add function key bindings f1-f10
- Modify catalog app to use new features in an AppView, listen
F10 key to toggle statusbar visibility.
- Relates #805
- Relates #807
- Relates #811
- This commit adds proof of concept work for terminal ui as is.
- Some things work, some don't but we need to start from somewhere.
Further development continues in a main.
- Essentially we are starting to have enough so that it merits to
move all this work into a main repo.
- Everything new is kept under org.springframework.shell.component.view
and will get revisiter later to find correct locations for some classes.
- Catalog sample has been modified to provide "showcase" app for
terminal ui features. This is a start while it already contains
some usefull scenarios.
- Relates #800
- Relates #801
- Relates #802
- Relates #803
- Relates #804
- Relates #805
- Relates #806
- Relates #807
- Relates #808
- Relates #809
- Relates #810
- Relates #811
- Fix alias command extraction from existing @Command
annotations so that we actually get multiple aliases
defined if more than one defined on a method level.
- Fix rendering issue in a help stg template when
multiple aliases exists.
- Fixes#796
- Change to have better support for args like:
"--arg1 a --arg2 b"
"--arg1 a --arg2 b c"
"--arg1 a c --arg2 b c"
"c --arg1 a --arg2 b"
where option can have default values and position of
positional args doesn't matter that much.
- Make parser to be aware of if it's handling last option
so that we can differentiate if error can be given i.e.
with too many args, etc.
- Fixes#795
- New OptionMethodArgumentResolver which is similar
than ShellOptionMethodArgumentResolver for @ShellOption.
- Add missing annotation commands for e2e test command.
- Fixes#767
- 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
- 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
- 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
- Introduce new error TooManyArgumentsOptionException
and NotEnoughArgumentsOptionException.
- Parser not tracks arity min/max and imposes
if num of option arguments.
- CommandParserExceptionResolver contains better error
message handling for these containing more context
for a user.
- Fixes#614
- This commit modifies CommandParser to better track positional parameters
which previously used to go there for non-recognised options. Now using
relatively dump logic of just checking if first positional parameter starts
with '-' which indicates it's a candidate for a new `UnrecognisedOptionException`
which then would give user an error "Unrecognised option '--xxx'" for example.
- Fixes#601
- Fixes#602
- New annotations ExceptionResolver and ExitCode
- New needed functionality is in classes ExceptionResolverMethodResolver
and MethodCommandExceptionResolver.
- Hook these annotations with StandardMethodTargetRegistrar and Shell classes
- Fixes#597
- 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