Files
spring-shell/index.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 &amp; 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>