diff --git a/build.config b/build.config
index a9dd4235b..d0eee320d 100644
--- a/build.config
+++ b/build.config
@@ -15,5 +15,5 @@ function command_repl() {
}
function command_graal() {
- exec demo/target/graal $*
+ exec graal/target/graal $*
}
diff --git a/demo/pom.xml b/demo/pom.xml
index b5d18f199..4a92e87dc 100644
--- a/demo/pom.xml
+++ b/demo/pom.xml
@@ -25,7 +25,7 @@
org.jline.demo
-
+
org.jline
@@ -105,11 +105,6 @@
org.slf4j
slf4j-jdk14
-
- org.graalvm.sdk
- graal-sdk
- provided
-
@@ -187,40 +182,11 @@
data.json
-
- src/main/resources
-
- reflection-config.json
-
-
-
- org.graalvm.nativeimage
- native-image-maven-plugin
-
-
-
- native-image
-
- package
-
-
-
- ${native.image.skip}
- graal
- org.jline.demo.Graal
-
- --no-fallback
- --report-unsupported-elements-at-runtime
- --allow-incomplete-classpath
- -H:ReflectionConfigurationFiles=reflection-config.json
-
-
-
diff --git a/graal/pom.xml b/graal/pom.xml
new file mode 100644
index 000000000..83e0a124a
--- /dev/null
+++ b/graal/pom.xml
@@ -0,0 +1,125 @@
+
+
+
+
+ 4.0.0
+
+
+ org.jline
+ jline-parent
+ 3.17.2-SNAPSHOT
+
+
+ jline-graal
+ JLine Graal Demo
+
+
+ org.jline.graal
+
+
+
+
+ org.jline
+ jline
+
+
+
+ net.java.dev.jna
+ jna
+
+
+
+ org.fusesource.jansi
+ jansi
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ slf4j-jdk14
+
+
+ org.graalvm.sdk
+ graal-sdk
+ provided
+
+
+
+
+
+
+ maven-dependency-plugin
+
+
+ copy
+
+ copy-dependencies
+
+
+ ${project.build.directory}/lib
+
+
+
+
+
+ maven-resources-plugin
+
+
+ copy-root
+ validate
+
+ copy-resources
+
+
+ ${basedir}/target
+
+
+ src/main/resources
+
+ reflection-config.json
+
+
+
+
+
+
+
+
+ org.graalvm.nativeimage
+ native-image-maven-plugin
+
+
+
+ native-image
+
+ package
+
+
+
+ ${native.image.skip}
+ graal
+ org.jline.demo.graal.Graal
+
+ --no-fallback
+ --report-unsupported-elements-at-runtime
+ --allow-incomplete-classpath
+ -H:ReflectionConfigurationFiles=reflection-config.json
+
+
+
+
+
+
+
diff --git a/demo/src/main/java/org/jline/demo/Graal.java b/graal/src/main/java/org/jline/demo/graal/Graal.java
similarity index 78%
rename from demo/src/main/java/org/jline/demo/Graal.java
rename to graal/src/main/java/org/jline/demo/graal/Graal.java
index 166dc02ef..36d2061cd 100644
--- a/demo/src/main/java/org/jline/demo/Graal.java
+++ b/graal/src/main/java/org/jline/demo/graal/Graal.java
@@ -6,12 +6,13 @@
*
* https://opensource.org/licenses/BSD-3-Clause
*/
-package org.jline.demo;
+package org.jline.demo.graal;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
+import java.util.function.Supplier;
import org.jline.console.impl.Builtins;
import org.jline.console.impl.Builtins.Command;
@@ -21,7 +22,6 @@
import org.jline.reader.*;
import org.jline.reader.LineReader.Option;
import org.jline.reader.impl.DefaultParser;
-import org.jline.reader.impl.DefaultParser.Bracket;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.jline.terminal.Terminal.Signal;
@@ -32,36 +32,31 @@
public class Graal {
- private static Path workDir() {
- return Paths.get(System.getProperty("user.dir"));
- }
-
public static void main(String[] args) {
try {
+ Supplier workDir = () -> Paths.get(System.getProperty("user.dir"));
//
// Parser & Terminal
//
DefaultParser parser = new DefaultParser();
- parser.setEofOnUnclosedBracket(Bracket.CURLY, Bracket.ROUND, Bracket.SQUARE);
parser.setEofOnUnclosedQuote(true);
parser.setEscapeChars(null);
- parser.setRegexCommand("[:]{0,1}[a-zA-Z!]{1,}\\S*"); // change default regex to support shell commands
parser.setRegexVariable(null); // we do not have console variables!
Terminal terminal = TerminalBuilder.builder().build();
Thread executeThread = Thread.currentThread();
terminal.handle(Signal.INT, signal -> executeThread.interrupt());
//
- // Command registeries
+ // Command registries
//
File file = new File(Graal.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
- String root = file.getCanonicalPath().replace("graal", "").replaceAll("\\\\", "/"); // forward slashes works better also in windows!
+ String root = file.getCanonicalPath().replace("graal", "")
+ .replaceAll("\\\\", "/"); // forward slashes works better also in windows!
ConfigurationPath configPath = new ConfigurationPath(Paths.get(root), Paths.get(root));
Set commands = new HashSet<>(Arrays.asList(Builtins.Command.values()));
commands.remove(Command.TTOP); // ttop command is not supported in GraalVM
- Builtins builtins = new Builtins(commands, Graal::workDir, configPath, null);
- Repl.MyCommands myCommands = new Repl.MyCommands(Graal::workDir);
- SystemRegistryImpl systemRegistry = new SystemRegistryImpl(parser, terminal, Graal::workDir, configPath);
- systemRegistry.setCommandRegistries(builtins, myCommands);
+ Builtins builtins = new Builtins(commands, workDir, configPath, null);
+ SystemRegistryImpl systemRegistry = new SystemRegistryImpl(parser, terminal, workDir, configPath);
+ systemRegistry.setCommandRegistries(builtins);
//
// LineReader
//
@@ -82,10 +77,9 @@ public static void main(String[] args) {
reader.setVariable(LineReader.BLINK_MATCHING_PAREN, 0); // if enabled cursor remains in begin parenthesis (gitbash)
}
//
- // complete command registeries
+ // complete command registries
//
builtins.setLineReader(reader);
- myCommands.setLineReader(reader);
//
// widgets and console initialization
//
@@ -98,9 +92,8 @@ public static void main(String[] args) {
System.out.println(terminal.getName() + ": " + terminal.getType());
while (true) {
try {
- systemRegistry.cleanUp(); // delete temporary variables and reset output streams
+ systemRegistry.cleanUp(); // reset output streams
String line = reader.readLine("graal> ");
- line = parser.getCommand(line).startsWith("!") ? line.replaceFirst("!", "! ") : line;
Object result = systemRegistry.execute(line);
if (result != null) {
System.out.println(result);
@@ -113,10 +106,10 @@ public static void main(String[] args) {
break;
}
catch (Exception e) {
- systemRegistry.trace(true, e); // print exception and save it to console variable
+ systemRegistry.trace(true, e); // print exception
}
}
- systemRegistry.close(); // persist pipeline completer names etc
+ systemRegistry.close();
}
catch (Throwable t) {
t.printStackTrace();
diff --git a/demo/src/main/resources/META-INF/native-image/resource-config.json b/graal/src/main/resources/native-image/resource-config.json
similarity index 100%
rename from demo/src/main/resources/META-INF/native-image/resource-config.json
rename to graal/src/main/resources/native-image/resource-config.json
diff --git a/demo/src/main/resources/reflection-config.json b/graal/src/main/resources/reflection-config.json
similarity index 100%
rename from demo/src/main/resources/reflection-config.json
rename to graal/src/main/resources/reflection-config.json
diff --git a/pom.xml b/pom.xml
index 5c87b738d..792e0d563 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
3.0.6
2.5.0
19.3.1
-
+
@@ -255,7 +255,7 @@
groovy-console
${groovy.version}
-
+
org.graalvm.sdk
graal-sdk
@@ -543,7 +543,7 @@
org.graalvm.nativeimage
native-image-maven-plugin
${graal.version}
-
+
@@ -606,6 +606,7 @@
style
jline
demo
+ graal