diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 87afae0..6139a03 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,6 +8,7 @@ plugins { // Apply the application plugin to add support for building a CLI application in Java. application + id("com.gradleup.shadow") version "9.0.0-beta12" } repositories { @@ -23,6 +24,8 @@ dependencies { // This dependency is used by the application. implementation(libs.guava) + + implementation("org.jline:jline:3.29.0") } // Apply a specific Java toolchain to ease working on different environments. @@ -30,7 +33,7 @@ java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } application { // Define the main class for the application. - mainClass = "fun.youthlic.Graph" + mainClass = "fun.youthlic.GraphCLI" } tasks.named("test") { diff --git a/app/src/main/java/fun/youthlic/GraphCLI.java b/app/src/main/java/fun/youthlic/GraphCLI.java new file mode 100644 index 0000000..cc5b3c8 --- /dev/null +++ b/app/src/main/java/fun/youthlic/GraphCLI.java @@ -0,0 +1,28 @@ +package fun.youthlic; + +import java.io.IOException; + +import org.jline.reader.LineReader; +import org.jline.reader.LineReaderBuilder; +import org.jline.reader.impl.DefaultParser; +import org.jline.terminal.Terminal; +import org.jline.terminal.TerminalBuilder; + +public class GraphCLI { + + public static void main(final String[] args) { + try { + final Terminal terminal = TerminalBuilder.builder().system(true).build(); + final LineReader reader = LineReaderBuilder.builder().terminal(terminal).parser(new DefaultParser()) + .build(); + while (true) { + final String line = reader.readLine("graph> "); + if (line.trim().equalsIgnoreCase("exit")) + break; + System.out.println(line); + } + } catch (final IOException e) { + } finally { + } + } +}