This is an automated email from the ASF dual-hosted git repository.
aradzinski pushed a commit to branch NLPCRAFT-108
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-108 by this push:
new 129a7a5 WIP.
129a7a5 is described below
commit 129a7a53adcba039e420462c863177e3a0943a0b
Author: Aaron Radzinski <[email protected]>
AuthorDate: Fri Oct 2 18:57:00 2020 -0700
WIP.
---
nlpcraft/pom.xml | 4 +++
.../nlpcraft/model/tools/cmdline/NCCli.scala | 33 ++++++++++++++++------
pom.xml | 7 +++++
3 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/nlpcraft/pom.xml b/nlpcraft/pom.xml
index 48078d8..9126292 100644
--- a/nlpcraft/pom.xml
+++ b/nlpcraft/pom.xml
@@ -38,6 +38,10 @@
<dependencies>
<dependency>
+ <groupId>org.fusesource.jansi</groupId>
+ <artifactId>jansi</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</dependency>
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
index bc4e78d..83bf229 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
@@ -17,7 +17,7 @@
package org.apache.nlpcraft.model.tools.cmdline
-import java.io.{BufferedReader, File, FileInputStream, IOException,
InputStreamReader, ObjectInputStream}
+import java.io.{File, FileInputStream, IOException, ObjectInputStream}
import java.net.URL
import com.google.gson._
@@ -40,10 +40,14 @@ import java.text.DateFormat
import java.util.Date
import org.apache.nlpcraft.common.util.NCUtils.IntTimeUnits
+import org.jline.builtins.Completers.TreeCompleter
+import org.jline.builtins.Completers.TreeCompleter.node
import org.jline.reader.impl.DefaultParser
import org.jline.terminal.TerminalBuilder
import org.jline.reader.{EndOfFileException, LineReader, LineReaderBuilder,
UserInterruptException}
import org.jline.reader.impl.DefaultParser.Bracket
+import org.jline.reader.impl.completer.AggregateCompleter
+import org.jline.widget.AutosuggestionWidgets
import resource.managed
import scala.collection.mutable
@@ -354,7 +358,11 @@ object NCCli extends App {
)
).sortBy(_.id)
- private final val HELP_CMD = CMDS.find(_.id == "help").get
+ require(
+ U.getDups(CMDS.flatMap(_.names)).isEmpty,
+ "Dup commands."
+ )
+
private final val DFLT_CMD = CMDS.find(_.id == "repl").get
private final val NO_ANSI_CMD = CMDS.find(_.id == "no-ansi").get
private final val ANSI_CMD = CMDS.find(_.id == "ansi").get
@@ -477,8 +485,6 @@ object NCCli extends App {
pb.redirectOutput(Redirect.appendTo(output))
try {
- val startMs = currentTime
-
pb.start()
logln(s"Server output: ${c(output.getAbsolutePath)}")
@@ -845,8 +851,6 @@ object NCCli extends App {
logln(s"Type '${c("?")}' or '${c("? -c=repl")}' to get help.")
logln(s"Type '${c("quit")}' to exit.")
- val in = new BufferedReader(new InputStreamReader(System.in))
-
val QUITS = Seq(
"quit", "exit", "/q", "\\q"
)
@@ -856,21 +860,34 @@ object NCCli extends App {
val term = TerminalBuilder.builder()
.system(true)
.dumb(true)
- .build();
+ .jansi(true)
+ .build()
val parser = new DefaultParser()
parser.setEofOnUnclosedBracket(Bracket.CURLY, Bracket.ROUND,
Bracket.SQUARE)
+ //val cmdNames = CMDS.flatMap(_.names)
+
+ val completer = new AggregateCompleter(
+ new TreeCompleter(
+ CMDS.flatMap(cmd ⇒ cmd.names.map(name ⇒
+ node(Seq(name) ++
cmd.params.flatMap(_.names).map(node(_)): _*)
+ )):_*
+ )
+ )
+
val reader = LineReaderBuilder
.builder
.terminal(term)
// .completer(completer)
.parser(parser)
- .variable(LineReader.SECONDARY_PROMPT_PATTERN, s"${g(">>")} ")
+// .variable(LineReader.SECONDARY_PROMPT_PATTERN, s"${g(">>")} ")
.variable(LineReader.INDENTATION, 2)
.build
+ new AutosuggestionWidgets(reader).enable()
+
while (!exit) {
val rawLine =
try
diff --git a/pom.xml b/pom.xml
index bd73a7a..34a67f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -130,6 +130,7 @@
<vertical.blank.ver>1.0.1</vertical.blank.ver>
<fliptables.ver>1.1.0</fliptables.ver>
<jline.ver>3.16.0</jline.ver>
+ <jansi.ver>1.18</jansi.ver>
<!--
Following libraries versions are compatible:
@@ -202,6 +203,12 @@
</dependency>
<dependency>
+ <groupId>org.fusesource.jansi</groupId>
+ <artifactId>jansi</artifactId>
+ <version>${jansi.ver}</version>
+ </dependency>
+
+ <dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-exporter-trace-jaeger</artifactId>
<version>${opencensus.ver}</version>