GitHunt
IW

iweiss/aesh

Æsh is a Java library for handling console input.

== Æsh (Another Extendable SHell)

image:https://travis-ci.org/aeshell/aesh.svg?branch=master["Build Status", link="https://travis-ci.org/aeshell/aesh"]

Æsh is a Java library to easily create commands through a well defined API. Æsh will take care of all the parsing and injection for your commands. Æsh uses the project 'aesh-readline' for it's terminal/readline integration.

IMPORTANT:

We're now heading into the final stages before we'll tag an 1.0-alpha release.
The master branch is fairly stable atm and the plan is to not change anything big in the upcoming weeks.
We have released a snapshot version of 1.0 if you are eager to test. Just add this to your 'pom.xml':

[source,xml]

org.aesh aesh 1.7 ----

'build.gradle' file.
[source]

dependencies {
compile group: 'org.aesh', name: 'aesh', version: '1.0-SNAPSHOT'
}

Features:

Æsh is a library to easily create commands. We recommend using annotations as the default way of
adding metadata for your commands, but we also have a builder API if that is preferred.
Some of our features:

  • Easy to use API to create everything from simple to advanced commands
  • Supports different types of options (list, group, single) and arguments
  • Builtin completors for default values, booleans and files
  • Supports multiple hierarcy of sub commands eg: git rebase/pull/++
  • All option values and arguments are automatically injected during execution
  • Possible to add custom validators, activators, completors, converters,
    renderers and parsers
  • Automatically generates help/info text based on the metadata provided
  • Can add and remove commands during runtime
  • ++++

All the readline functionality included in 'aesh-readline', eg:

  • Line editing
  • History (search, persistence)
  • Completion
  • Masking
  • Undo and Redo
  • Paste buffer
  • Emacs and Vi editing mode
  • Supports POSIX OS's and Windows
  • Easy to configure (history file & buffer size, edit mode, streams, possible to override terminal implementations, etc)
  • Support standard out and standard error
  • Redirect
  • Alias
  • Pipeline

How to build:

Æsh Developer List:

https://groups.google.com/forum/#!forum/aesh-dev

To get going:

[source,java]

import org.aesh.command.Command;
import org.aesh.command.CommandDefinition;
import org.aesh.command.CommandException;
import org.aesh.command.CommandResult;
import org.aesh.command.impl.registry.AeshCommandRegistryBuilder;
import org.aesh.command.invocation.CommandInvocation;
import org.aesh.command.parser.CommandLineParserException;
import org.aesh.command.registry.CommandRegistry;
import org.aesh.console.settings.Settings;
import org.aesh.console.settings.SettingsBuilder;
import org.aesh.readline.ReadlineConsole;

import java.io.IOException;

public class SimpleExample {
public static void main(String[] args) throws CommandLineParserException, IOException {
CommandRegistry registry = new AeshCommandRegistryBuilder()
.command(ExitCommand.class)
.create();
Settings settings = SettingsBuilder
.builder()
.commandRegistry(registry)
.build();
ReadlineConsole console = new ReadlineConsole(settings);
console.setPrompt("[simple@aesh]$ ");
console.start();
}

@CommandDefinition(name = "exit", description = "exit the program", aliases = {"quit"})
public static class ExitCommand implements Command {
    @Override
    public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
        commandInvocation.stop();
        return CommandResult.SUCCESS;
    }
}

}

[source,java]

iweiss/aesh | GitHunt