113 lines
3.5 KiB
HTML
113 lines
3.5 KiB
HTML
---
|
|
# The name of your project
|
|
title: Spring Shell
|
|
|
|
badges:
|
|
|
|
# Customize your project's badges. Delete any entries that do not apply.
|
|
custom:
|
|
- name: Source (GitHub)
|
|
url: https://github.com/spring-projects/spring-shell
|
|
icon: github
|
|
|
|
- name: Issues (GitHub)
|
|
url: https://github.com/spring-projects/spring-shell/issues
|
|
icon: tracking
|
|
|
|
- name: CI (Bamboo)
|
|
url: https://build.spring.io/browse/SPRINGSHELL
|
|
icon: ci
|
|
|
|
- name: StackOverflow
|
|
url: https://stackoverflow.com/questions/tagged/spring-shell
|
|
icon: stackoverflow
|
|
|
|
---
|
|
<!DOCTYPE HTML>
|
|
<html lang="en-US">
|
|
|
|
{% capture billboard_description %}
|
|
|
|
The Spring Shell project provides an interactive shell that allows you to
|
|
plugin your own custom commands using a Spring based programming model.
|
|
|
|
{% endcapture %}
|
|
|
|
{% capture main_content %}
|
|
|
|
## Introduction
|
|
|
|
Users of the Spring Shell project can easily build a full featured shell ( *aka* command line)
|
|
application by depending on the Spring Shell jars and adding their own commands (which come as
|
|
methods on spring beans). Creating a command line application can be useful *e.g.* to
|
|
interact with your project's REST API, or to work with local file content.
|
|
|
|
## Features
|
|
Spring Shell's features include
|
|
|
|
* A simple, annotation driven, [programming model](https://docs.spring.io/spring-shell/docs/current-SNAPSHOT/reference/htmlsingle/#_writing_your_own_commands) to contribute custom commands
|
|
* Use of Spring Boot auto-configuration functionality as the basis for a command plugin strategy
|
|
* Tab completion, colorization, and script execution
|
|
* Customization of command prompt, shell history file name, handling of results and errors
|
|
* [Dynamic enablement](https://docs.spring.io/spring-shell/docs/current-SNAPSHOT/reference/htmlsingle/#dynamic-command-availability) of commands based on domain specific criteria
|
|
* Integration with the [bean validation API](https://docs.spring.io/spring-shell/docs/current-SNAPSHOT/reference/htmlsingle/#_validating_command_arguments)
|
|
* Already [built-in commands](https://docs.spring.io/spring-shell/docs/current-SNAPSHOT/reference/htmlsingle/#built-in-commands), such as clear screen, gorgeous help, exit
|
|
* ASCII art Tables, with formatting, alignment, fancy borders, *etc.*
|
|
|
|
|
|
<span id="quick-start"></span>
|
|
|
|
## Quick Start
|
|
|
|
|
|
{% include download_widget.md %}
|
|
|
|
Then to create a simple command that could be invoked as
|
|
|
|
```
|
|
shell:>translate "hello world!" --from en_US --to fr_FR
|
|
bonjour monde!
|
|
```
|
|
|
|
assuming you'd have access to some kind of translation service that worked with Locales:
|
|
|
|
```java
|
|
package foo;
|
|
|
|
@ShellComponent
|
|
public class TranslationCommands {
|
|
|
|
private final TranslationService service;
|
|
|
|
@Autowired
|
|
public TranslationCommands(TranslationService service) {
|
|
this.service = service;
|
|
}
|
|
|
|
@ShellMethod("Translate text from one language to another.")
|
|
public String translate(
|
|
@ShellOption(mandatory = true) String text,
|
|
@ShellOption(mandatory = true, defaultValue = "en_US") Locale from,
|
|
@ShellOption(mandatory = true) Locate to
|
|
) {
|
|
// invoke service
|
|
return service.translate(text, from, to);
|
|
}
|
|
}
|
|
```
|
|
|
|
{% endcapture %}
|
|
|
|
{% capture related_resources %}
|
|
|
|
### Samples & Related Projects
|
|
|
|
* [Spring Shell Samples](https://github.com/spring-projects/spring-shell/tree/master/spring-shell-samples)
|
|
* [Spring Cloud Skipper Shell](https://github.com/spring-cloud/spring-cloud-skipper/tree/master/spring-cloud-skipper-shell-commands)
|
|
|
|
{% endcapture %}
|
|
|
|
|
|
{% include project_page.html %}
|
|
</html>
|