Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 49 additions & 2 deletions bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,8 @@
<!-- Check the compatibility matrix (https://github.com/opensearch-project/opensearch-testcontainers) before upgrading: -->
<opensearch-testcontainers.version>2.1.3</opensearch-testcontainers.version>
<com.dajudge.kindcontainer>2.0.0</com.dajudge.kindcontainer>
<aesh.version>2.8.2</aesh.version>
<aesh-readline.version>2.6</aesh-readline.version>
<aesh.version>3.2</aesh.version>
<aesh-readline.version>3.2</aesh-readline.version>
<jansi.version>2.4.0</jansi.version> <!-- Keep in sync with aesh-readline and dekorate -->
<!-- these two artifacts needs to be compatible together -->
<strimzi-oauth.version>0.16.1</strimzi-oauth.version>
Expand Down Expand Up @@ -3616,6 +3616,36 @@
<artifactId>quarkus-resteasy-qute-deployment</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-aesh</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-aesh-deployment</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-aesh-websocket</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-aesh-websocket-deployment</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-aesh-ssh</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-aesh-ssh-deployment</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-picocli</artifactId>
Expand Down Expand Up @@ -6426,6 +6456,23 @@
<artifactId>aesh</artifactId>
<version>${aesh.version}</version>
</dependency>
<dependency>
<groupId>org.aesh</groupId>
<artifactId>terminal-http</artifactId>
<version>${aesh-readline.version}</version>
</dependency>
<dependency>
<groupId>org.aesh</groupId>
<artifactId>terminal-ssh</artifactId>
<version>${aesh-readline.version}</version>
</dependency>

<!-- Apache SSHD Netty transport (sshd-core and sshd-common already managed) -->
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-netty</artifactId>
<version>${sshd-common.version}</version>
</dependency>

<!-- Picocli -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ public interface Capability {

String QUARKUS_PREFIX = "io.quarkus";

/**
* Aesh CLI framework
*/
String AESH = QUARKUS_PREFIX + ".aesh";
String AESH_SSH = AESH + ".ssh";
String AESH_WEBSOCKET = AESH + ".websocket";

/**
* A datasource connection pool implementation
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
*/
public enum Feature {

AESH,
AESH_SSH,
AESH_WEBSOCKET,
AGROAL,
AMAZON_LAMBDA,
AZURE_FUNCTIONS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.aesh.command.registry.CommandRegistry;
import org.aesh.command.settings.Settings;
import org.aesh.command.settings.SettingsBuilder;
import org.aesh.readline.ReadlineConsole;
import org.aesh.console.ReadlineConsole;
import org.aesh.readline.alias.AliasManager;
import org.aesh.terminal.Attributes;
import org.aesh.terminal.Connection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import java.util.function.Consumer;
import java.util.function.Supplier;

import org.aesh.readline.tty.terminal.TerminalConnection;
import org.aesh.terminal.Connection;
import org.aesh.terminal.tty.TerminalConnection;

import io.quarkus.deployment.dev.testing.TestConfig;
import io.quarkus.dev.console.BasicConsole;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;

import org.fusesource.jansi.AnsiColors;
import org.fusesource.jansi.AnsiMode;
import org.fusesource.jansi.AnsiType;
import org.fusesource.jansi.io.AnsiOutputStream;
import org.jline.jansi.AnsiColors;
import org.jline.jansi.AnsiMode;
import org.jline.jansi.AnsiType;
import org.jline.jansi.io.AnsiOutputStream;

public class HtmlAnsiOutputStream extends AnsiOutputStream {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.util.ArrayList;
import java.util.List;

import org.fusesource.jansi.io.AnsiProcessor;
import org.jline.jansi.io.AnsiProcessor;

public class HtmlAnsiProcessor extends AnsiProcessor {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import static io.quarkus.devtools.commands.CreateExtension.isQuarkiverseGroupId;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.fusesource.jansi.Ansi.ansi;
import static org.jline.jansi.Ansi.ansi;

import java.io.File;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import static io.quarkus.devtools.commands.CreateJBangProject.CreateJBangProjectKey.NO_JBANG_WRAPPER;
import static io.quarkus.devtools.project.CodestartResourceLoadersBuilder.codestartLoadersBuilder;
import static org.fusesource.jansi.Ansi.ansi;
import static org.jline.jansi.Ansi.ansi;

import java.io.File;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.quarkus.maven;

import static io.quarkus.devtools.project.CodestartResourceLoadersBuilder.codestartLoadersBuilder;
import static org.fusesource.jansi.Ansi.ansi;
import static org.jline.jansi.Ansi.ansi;

import java.io.File;
import java.io.IOException;
Expand Down Expand Up @@ -30,7 +30,7 @@
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.impl.RemoteRepositoryManager;
import org.eclipse.aether.repository.RemoteRepository;
import org.fusesource.jansi.Ansi;
import org.jline.jansi.Ansi;

import io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver;
import io.quarkus.devtools.commands.CreateProject;
Expand Down
6 changes: 3 additions & 3 deletions devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
import java.util.function.Consumer;
import java.util.stream.Collectors;

import org.aesh.readline.terminal.impl.ExecPty;
import org.aesh.readline.terminal.impl.Pty;
import org.aesh.terminal.Attributes;
import org.aesh.terminal.tty.impl.ExecPty;
import org.aesh.terminal.tty.impl.Pty;
import org.aesh.terminal.utils.ANSI;
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.artifact.Artifact;
Expand Down Expand Up @@ -88,7 +88,7 @@
import org.eclipse.aether.resolution.DependencyResolutionException;
import org.eclipse.aether.resolution.DependencyResult;
import org.eclipse.aether.util.artifact.JavaScopes;
import org.fusesource.jansi.internal.Kernel32;
import org.jline.nativ.Kernel32;

import io.quarkus.bootstrap.BootstrapConstants;
import io.quarkus.bootstrap.app.ApplicationModelSerializer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

import org.aesh.readline.Readline;
import org.aesh.readline.ReadlineBuilder;
import org.aesh.readline.tty.terminal.TerminalConnection;
import org.aesh.terminal.tty.Signal;
import org.aesh.terminal.tty.TerminalConnection;

/**
* Prompt implementation.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{#include readme-header /}

Also for Aesh applications the dev mode is supported. When running dev mode, the Aesh application is executed and on press of the Space bar key, is restarted.

As Aesh applications will often require arguments to be passed on the commandline, this is also possible in dev mode via:

```shell script
{buildtool.cli} {buildtool.cmd.dev} {#if input.base-codestart.buildtool == 'gradle' || input.base-codestart.buildtool == 'gradle-kotlin-dsl'}--quarkus-args{#else}-Dquarkus.args{/if}='--name=Quarky'
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: aesh-codestart
ref: aesh
type: code
tags: extension-codestart
metadata:
title: Aesh Example
description: Hello and goodbye are civilization fundamentals. Let's not forget it with this example Aesh command line application by changing the <code>command</code> and <code>options</code>.
related-guide-section: https://quarkus.io/guides/aesh
language:
base:
dependencies:
- io.quarkus:quarkus-aesh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.acme;

import org.aesh.command.Command;
import org.aesh.command.CommandDefinition;
import org.aesh.command.CommandResult;
import org.aesh.command.invocation.CommandInvocation;
import org.aesh.command.option.Option;

@CommandDefinition(name = "hello", description = "Greet someone")
public class HelloCommand implements Command<CommandInvocation> {

@Option(shortName = 'n', name = "name", description = "Your name.",
defaultValue = "aesh")
String name;

@Override
public CommandResult execute(CommandInvocation invocation) {
invocation.println("Hello " + name + ", go go commando!");
return CommandResult.SUCCESS;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.acme;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

import io.quarkus.test.junit.main.Launch;
import io.quarkus.test.junit.main.LaunchResult;
import io.quarkus.test.junit.main.QuarkusMainLauncher;
import io.quarkus.test.junit.main.QuarkusMainTest;

@QuarkusMainTest
public class HelloCommandTest {

@Test
public void testBasicLaunch(QuarkusMainLauncher launcher) {
LaunchResult result = launcher.launch();
assertTrue(result.getOutput().contains("Hello aesh, go go commando!"), result.getOutput());
assertEquals(result.exitCode(), 0);
}

@Test
@Launch({ "--name=Alice" })
public void testLaunchWithArguments(LaunchResult result) {
assertTrue(result.getOutput().contains("Hello Alice, go go commando!"), result.getOutput());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.acme

import org.aesh.command.Command
import org.aesh.command.CommandDefinition
import org.aesh.command.CommandResult
import org.aesh.command.invocation.CommandInvocation
import org.aesh.command.option.Option

@CommandDefinition(name = "hello", description = "Greet someone")
class HelloCommand : Command<CommandInvocation> {

@Option(shortName = 'n', name = "name", description = "Your name.",
defaultValue = ["aesh"])
var name: String? = null

override fun execute(invocation: CommandInvocation): CommandResult {
invocation.println("Hello $name, go go commando!")
return CommandResult.SUCCESS
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.acme

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue

import org.junit.jupiter.api.Test

import io.quarkus.test.junit.main.Launch
import io.quarkus.test.junit.main.LaunchResult
import io.quarkus.test.junit.main.QuarkusMainLauncher
import io.quarkus.test.junit.main.QuarkusMainTest

@QuarkusMainTest
class HelloCommandTest {

@Test
fun testBasicLaunch(launcher: QuarkusMainLauncher) {
val result = launcher.launch()
assertTrue(result.output.contains("Hello aesh, go go commando!"), result.output)
assertEquals(0, result.exitCode)
}

@Test
@Launch(["--name=Alice"])
fun testLaunchWithArguments(result: LaunchResult) {
assertTrue(result.output.contains("Hello Alice, go go commando!"), result.output)
}
}
Loading
Loading