Commit Graph

40 Commits

Author SHA1 Message Date
Janne Valkealahti
e193ca1d24 Upgrade to Boot 3.x
- For now port spring-native to framework config.
- 3rd party configs should go somewhere else.
- Fix changes from javax to jakarta.
- Change java settings as we now require jdk 17.
- Fixes #385
2022-07-24 08:07:14 +01:00
Janne Valkealahti
643b189fb8 Default boolean arg to false
- In a case where arg is given as boolean and with plain
  @ShellOption (user doesn't define defaults), configure
  arg not to be mandatory and with default value false.
- This brings this spesific case more close how it behave
  in older shell version.
- Having `@ShellOption boolean arg1` it now works as:
    my-shell:>e2e reg default-value-boolean3
    Hello false
    my-shell:>e2e reg default-value-boolean3 --arg1
    Hello true
    my-shell:>e2e reg default-value-boolean3 --arg1 false
    Hello false
    my-shell:>e2e reg default-value-boolean3 --arg1 true
    Hello true
- Fixes #461
2022-07-18 12:41:23 +03:00
Janne Valkealahti
5ba8e185bc Fix method argument without ShellOption
- For annotated methods with arguments, change default arity
  to zero with booleans and one everything else regardless
  if @ShellOption is defined or not.
- OptionArity.ZERO_OR_ONE had wrong upperbound value, change
  from MAX to 1.
- These modification should take us a bit closer to old
  shell functionality and what ShellOption documents for arity.
- For old functionality I'm referring to method
  `add(int a, int b)` and/or having @ShellOption and/or without
  arity setting.
- Fixes #446
2022-07-14 20:21:52 +01:00
Janne Valkealahti
32f77c1917 Rework completion interfaces
- 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
2022-07-06 09:02:06 +01:00
Janne Valkealahti
5eaa5dd093 Implement interactive completion
- 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
2022-06-28 14:10:23 +03:00
Janne Valkealahti
2ba288cb54 Fix ShellOption with required
- Take 2
- Fix case with optional.
- Fixes #436
2022-06-02 09:55:55 +01:00
Janne Valkealahti
f7992a682e Fix ShellOption with required
- Where applicable mark option required so that
  user is notified instead of blindly using null.
- Fixes #436
2022-06-02 08:41:48 +01:00
Janne Valkealahti
bd9ab62013 Rework help command
- 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
2022-05-26 07:45:35 +01:00
Janne Valkealahti
baf8346063 Change help to description in command registration
- Fixes #421
2022-05-18 08:59:57 +01:00
Janne Valkealahti
75ff6e976f Fix use of default values
- Change parsing to extract and use option default value
  and also hook it with @ShellOption.
- Fixes #409
2022-05-11 07:23:11 +01:00
Janne Valkealahti
8a23518b84 Rework command subsystem
- 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
2022-05-06 08:32:53 +01:00
Janne Valkealahti
ac80086094 Add missing field inits 2022-02-18 13:20:26 +00:00
Janne Valkealahti
5ff98290e9 Add more beans to AbstractShellComponent
- Add more common stuff like ResourceLoader, TemplateExecutor,
  ThemeResolver.
- Make class abstract.
- Expose more with sub-classes.
2022-02-18 13:07:08 +00:00
Janne Valkealahti
52ff4a2d85 Add version command
- 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
2022-01-23 09:23:16 +00:00
Janne Valkealahti
dbe8a8b408 Separate interactive and non-interactive commands
- 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
2022-01-09 14:15:47 +00:00
Janne Valkealahti
668ddb458e Completion command for bash
- Add basic support of defining a command `completion bash` which
  outputs a generic bash script which can be used in a user environment.
- Idea for completion is copied from go's cobra library what comes for
  a bash dance itself.
- Goes through command registry, builds a model for command structure
  and uses antlr st4 for templating bash.
- Should give foundation to create other completions just like in cobra.
- Currently as we don't know a root-command in a generic way, option
  `spring.shell.command.completion.root-command` is required user to set.
- Fixes #343
2022-01-07 10:02:51 +00:00
Janne Valkealahti
d578f28662 Polish 2021-12-24 13:54:41 +00:00
Janne Valkealahti
f6394a4531 Rework bean handling
- Lot of rework to move better model to work around bean cycles
- Remove use of @Lazy
- Move StandardAPIAutoConfiguration to autoconfig package
- Remove some of a direct ObjectProvider use in constructors
- Adds spring-native support with most of a things working out of a box
- Relates #324
- Relates #329
- Relates #323
2021-12-24 08:50:40 +00:00
Janne Valkealahti
af838ca006 Polish 2021-12-18 16:59:48 +00:00
Janne Valkealahti
5e61ff1315 Polish unused imports 2021-12-11 13:09:00 +00:00
Janne Valkealahti
e30edf2446 Update boot 2.6.1
- 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.
2021-12-11 12:57:34 +00:00
Spring Operator
2ccab80189 URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 1 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 125 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).
2019-03-26 11:48:12 +01:00
Eric Bottard
f90edd42c4 Make ResultHandlers configuration more explicit
Handle exit as a dedicated case (prevents eg 'exit' commands in scripts to make script quit)
Add an example of custom ApplicationRunner

Fixes #187
Fixes #183

Decouple ApplicationRunners

Make ThrowableResultHandler behave differently in non-interactive mode
2018-01-15 15:59:01 +01:00
Eric Bottard
7d50c0813f Qualify the Spring Shell provided ConversionService
Fixes #173
2017-11-06 14:52:50 +01:00
Eric Bottard
b81b695382 Fix completion of params that involve conversion
Fixes #170
2017-10-16 15:44:33 +02:00
Eric Bottard
f0e5c45ee9 Add automatic command grouping
Fixes #163

Introduce Command and Command.Help
2017-09-28 09:44:48 +02:00
Roland Weisleder
e4e6471f27 Add command group and group output of help command
Resolves #135
2017-09-23 15:36:11 +02:00
Eric Bottard
4a6c699aca Inject the ValidatorFactory instead of Validator.
This prevents the Spring Validator Factory from being injected (it
does not support the 1.1 methods)
2017-09-11 17:16:43 +02:00
Eric Bottard
32c18bec75 Document bean validation constraints in help()
Fixes #147
2017-09-08 16:38:42 +02:00
Eric Bottard
efd9e24100 Fix completion on unfinished values
Fixes #143
2017-08-29 16:30:01 +02:00
Eric Bottard
6f79cc2686 Fix completion 2017-08-28 15:09:20 +02:00
Eric Bottard
1eea04ad2f Add dynamic command availability
Introduce availability concept on MethodTarget (with reason if not available)
Add bridge to @CliAvailabilityIndicator to Legacy registrar

Fixes #138

Add help for unavailable commands

Add standard API for availability
2017-08-23 18:44:31 +02:00
Eric Bottard
ff3153c419 Add script command.
Also: prepare for execute-then-quit.
Add javadocs
2017-08-11 17:28:30 +02:00
Eric Bottard
39ec7d36c1 Uncamelify method names as documented 2017-08-10 15:39:37 +02:00
Eric Bottard
136ab89678 Rework prefix handling 2017-08-10 15:34:38 +02:00
Eric Bottard
cc37bb013b Document constants in @ShellOption 2017-08-10 13:49:28 +02:00
Eric Bottard
a4ff679e76 Add javadoc and sources generation 2017-08-10 12:19:32 +02:00
Eric Bottard
5b07a1a89c Rename ShellMethod.help() to value(), as it is the only mandatory attribute. 2017-08-10 11:13:13 +02:00
Eric Bottard
c8e4752119 Prevent double registration of commands 2017-08-08 11:52:32 +02:00
Eric Bottard
6497df181d Refactor packages and artifactIds to prepare for official migration to spring-projects repo.
Remove usage of component scan in favor of auto-conf

Fixes #61
2017-08-08 11:52:32 +02:00