You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2020/10/14 03:25:10 UTC

[incubator-nlpcraft] 01/23: WIP.

This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit d495873971116c58db66ada9850ca4ae76cc145f
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Fri Oct 9 17:50:52 2020 -0700

    WIP.
---
 .../nlpcraft/model/tools/cmdline/NCCli.scala       | 66 +++++++++++++++-------
 .../nlpcraft/server/rest/NCBasicRestApi.scala      |  2 +-
 2 files changed, 47 insertions(+), 21 deletions(-)

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 f4de0a9..bfa5c0c 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
@@ -160,6 +160,7 @@ object NCCli extends App {
     // Single CLI command.
     case class Command(
         name: String,
+        group: String,
         synopsis: String,
         desc: Option[String] = None,
         params: Seq[Parameter] = Seq.empty,
@@ -207,7 +208,8 @@ object NCCli extends App {
     private final val CMDS = Seq(
         Command(
             name = "rest",
-            synopsis = s"Issues REST call to locally running REST server.",
+            group = "Rest API",
+            synopsis = s"Issues REST call to local REST server.",
             desc = Some(
                 s"All NLPCraft REST API uses HTTP POST and JSON parameters ('Content-Type: application/json' header). " +
                 s"To issue the REST call you need to supply path and parameters. In REPL mode, hit ${rv(" Tab ")} to see auto-suggestion and " +
@@ -249,7 +251,8 @@ object NCCli extends App {
         ),
         Command(
             name = "tail-server",
-            synopsis = s"Shows last N lines for the local REST server log.",
+            group = "Server Ops",
+            synopsis = s"Shows last N lines from the local REST server log.",
             desc = Some(
                 s"Only works for the server started via this script."
             ),
@@ -272,6 +275,7 @@ object NCCli extends App {
         ),
         Command(
             name = "start-server",
+            group = "Server Ops",
             synopsis = s"Starts local REST server.",
             desc = Some(
                 s"REST server is started in the external JVM process with both stdout and stderr piped out into log file. " +
@@ -323,10 +327,11 @@ object NCCli extends App {
         ),
         Command(
             name = "restart-server",
+            group = "Server Ops",
             synopsis = s"Restarts local REST server.",
             desc = Some(
                 s"This command is equivalent to executing  ${y("'stop-server'")} and then ${y("'start-server'")} commands with " +
-                s"corresponding parameters. If there is no locally running REST server the ${y("'stop-server'")} command is ignored."
+                s"corresponding parameters. If there is no local REST server the ${y("'stop-server'")} command is ignored."
             ),
             body = cmdRestartServer,
             params = Seq(
@@ -374,16 +379,19 @@ object NCCli extends App {
         ),
         Command(
             name = "info-server",
-            synopsis = s"Basic information about locally running REST server.",
+            group = "Server Ops",
+            synopsis = s"Info about local REST server.",
             body = cmdInfoServer
         ),
         Command(
             name = "cls",
+            group = "REPL",
             synopsis = s"Clears terminal screen.",
             body = cmdCls
         ),
         Command(
             name = "nano",
+            group = "REPL",
             synopsis = s"Runs built-in ${y("'nano'")} editor.",
             body = cmdNano,
             desc = Some(
@@ -415,6 +423,7 @@ object NCCli extends App {
         ),
         Command(
             name = "less",
+            group = "REPL",
             synopsis = s"Runs built-in ${y("'less'")} command.",
             body = cmdLess,
             desc = Some(
@@ -445,7 +454,8 @@ object NCCli extends App {
         ),
         Command(
             name = "no-ansi",
-            synopsis = s"Disables usage of ANSI escape codes for colors & terminal controls.",
+            group = "REPL",
+            synopsis = s"Disables ANSI escape codes for terminal colors & controls.",
             desc = Some(
                 s"This is a special command that can be combined with any other commands."
             ),
@@ -459,7 +469,8 @@ object NCCli extends App {
         ),
         Command(
             name = "ansi",
-            synopsis = s"Enables usage of ANSI escape codes for colors & terminal controls.",
+            group = "REPL",
+            synopsis = s"Enables ANSI escape codes for terminal colors & controls.",
             desc = Some(
                 s"This is a special command that can be combined with any other commands."
             ),
@@ -473,6 +484,7 @@ object NCCli extends App {
         ),
         Command(
             name = "ping-server",
+            group = "Server Ops",
             synopsis = s"Pings local REST server.",
             desc = Some(
                 s"REST server is pinged using ${y("'/health'")} REST call to check its online status."
@@ -499,6 +511,7 @@ object NCCli extends App {
         ),
         Command(
             name = "stop-server",
+            group = "Server Ops",
             synopsis = s"Stops local REST server.",
             desc = Some(
                 s"Local REST server must be started via ${y(s"'$SCRIPT_NAME''")} or other compatible way."
@@ -507,12 +520,14 @@ object NCCli extends App {
         ),
         Command(
             name = "quit",
+            group = "REPL",
             synopsis = s"Quits REPL when in REPL mode.",
             body = cmdQuit
         ),
         Command(
             name = "help",
-            synopsis = s"Displays manual page for ${y(s"'$SCRIPT_NAME'")}.",
+            group = "REPL",
+            synopsis = s"Displays help for ${y(s"'$SCRIPT_NAME'")}.",
             desc = Some(
                 s"By default, without ${y("'--all'")} or ${y("'--cmd'")} parameters, displays the abbreviated form of manual " +
                 s"only listing the commands without parameters or examples."
@@ -546,6 +561,7 @@ object NCCli extends App {
         ),
         Command(
             name = "version",
+            group = "REPL",
             synopsis = s"Displays full version of ${y(s"'$SCRIPT_NAME'")} script.",
             desc = Some(
                 "Depending on the additional parameters can display only the semantic version or the release date."
@@ -1140,23 +1156,30 @@ object NCCli extends App {
             lines
         }
 
-        val tbl = NCAsciiTable().margin(left = if (repl) 0 else 4)
-
         if (args.isEmpty) { // Default - show abbreviated help.
             if (!repl)
                 header()
 
-            CMDS.foreach(cmd ⇒ tbl +/ (
-                "" → s"${g(cmd.name)}",
-                "align:left, maxWidth:85" → cmd.synopsis
-            ))
+            CMDS.groupBy(_.group).foreach(entry ⇒ {
+                val grp = entry._1
+                val grpCmds = entry._2
 
-            logln(tbl.toString)
+                val tbl = NCAsciiTable().margin(left = if (repl) 0 else 4)
+
+                grpCmds.foreach(cmd ⇒ tbl +/ (
+                    "" → s"${g(cmd.name)}",
+                    "align:left, maxWidth:85" → cmd.synopsis
+                ))
+
+                logln(s"\n$grp:\n${tbl.toString}")
+            })
         }
         else if (args.size == 1 && args.head.parameter.id == "all") { // Show a full format help for all commands.
             if (!repl)
                 header()
 
+            val tbl = NCAsciiTable().margin(left = if (repl) 0 else 4)
+
             CMDS.foreach(cmd ⇒
                 tbl +/ (
                     "" → s"${g(cmd.name)}",
@@ -1170,6 +1193,8 @@ object NCCli extends App {
             var err = false
             val seen = mutable.Buffer.empty[String]
 
+            val tbl = NCAsciiTable().margin(left = if (repl) 0 else 4)
+
             for (arg ← args) {
                 val cmdName = arg.value.get
 
@@ -1227,11 +1252,11 @@ object NCCli extends App {
         tbl += ("Token providers", s"${g(beacon.tokenProviders)}")
         tbl += ("NLP engine", s"${g(beacon.nlpEngine)}")
         tbl += ("Access tokens:", "")
-        tbl += ("  Scan frequency", s"${beacon.acsToksScanMins} mins")
-        tbl += ("  Expiration timeout", s"${beacon.acsToksExpireMins} mins")
+        tbl += ("  Scan frequency", s"$G${beacon.acsToksScanMins} mins$RST")
+        tbl += ("  Expiration timeout", s"$G${beacon.acsToksExpireMins} mins$RST")
         tbl += ("External config:", "")
-        tbl += ("  URL", s"${beacon.extConfigUrl}")
-        tbl += ("  Check MD5",s"${beacon.extConfigCheckMd5}")
+        tbl += ("  URL", s"${g(beacon.extConfigUrl)}")
+        tbl += ("  Check MD5",s"${g(beacon.extConfigCheckMd5)}")
         tbl += ("Log file", logPath)
         tbl += ("Started on", s"${g(DateFormat.getDateTimeInstance.format(new Date(beacon.startMs)))}")
 
@@ -1405,7 +1430,7 @@ object NCCli extends App {
         parser.regexVariable("")
 
         val completer = new Completer {
-            private val cmds = CMDS.map(c ⇒ c.name → c.synopsis)
+            private val cmds = CMDS.map(c ⇒ (c.name, c.synopsis, c.group))
 
             /**
              *
@@ -1425,11 +1450,12 @@ object NCCli extends App {
                     candidates.addAll(cmds.map(n ⇒ {
                         val name = n._1
                         val desc = n._2.substring(0, n._2.length - 1) // Remove last '.'.
+                        val grp = n._3
 
                         mkCandidate(
                             id = name,
                             disp = name,
-                            grp = null,
+                            grp = grp,
                             desc = desc,
                             completed = true
                         )
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala
index 60b6569..5555b47 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCBasicRestApi.scala
@@ -68,7 +68,7 @@ class NCBasicRestApi extends NCRestApi with LazyLogging with NCOpenCensusTrace w
      * General control exception.
      * Note that these classes must be public because scala 2.11 internal errors (compilations problems).
      */
-    case class AccessTokenFailure(acsTkn: String) extends NCE(s"Unknown access token: $acsTkn")
+    case class AccessTokenFailure(acsTkn: String) extends NCE(s"Unknown access token.")
     case class SignInFailure(email: String) extends NCE(s"Invalid or unknown user credentials for user with: $email")
     case class AdminRequired(email: String) extends NCE(s"Admin privileges required for user with: $email")
     case class InvalidOperation(email: String) extends NCE(s"Invalid operation.")