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 e472e9c Update NCCli.scala
e472e9c is described below
commit e472e9c46672e0aa60b5ad4a50e087f5b9ec385f
Author: Aaron Radzinski <[email protected]>
AuthorDate: Tue Oct 13 02:01:45 2020 -0700
Update NCCli.scala
---
.../nlpcraft/model/tools/cmdline/NCCli.scala | 116 ++++++++++++++++++---
1 file changed, 102 insertions(+), 14 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 fda5951..166b5d1 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
@@ -1224,6 +1224,9 @@ object NCCli extends App {
logln(g(" [OK]"))
logServerInfo(beacon)
+ if (state.accessToken.isDefined)
+ logln(s"Signed in with default
'${c("[email protected]")}' user.")
+
showTip()
}
}
@@ -1418,7 +1421,7 @@ object NCCli extends App {
val baseUrl = "http://" + beacon.restEndpoint
// Attempt to signin with the default account.
- if (autoSignIn && state.accessToken.isEmpty) {
+ if (autoSignIn && state.accessToken.isEmpty)
httpPostResponseJson(
baseUrl,
"signin",
@@ -1427,10 +1430,6 @@ object NCCli extends App {
case None ⇒ ()
}
- if (state.accessToken.isDefined)
- logln(s"REST server signed in with default
'${c("[email protected]")}' user.")
- }
-
// Attempt to get all connected probes if successfully signed
in prior.
if (state.accessToken.isDefined)
httpPostResponseJson(
@@ -1707,8 +1706,10 @@ object NCCli extends App {
s" ${c("tok")}: ${probe.probeToken}"
),
DurationFormatUtils.formatDurationHMS(currentTime -
probe.startTstamp),
- s"${probe.osName} ver. ${probe.osVersion}",
- s"${probe.hostName} (${probe.hostAddr})",
+ Seq(
+ s"${probe.hostName} (${probe.hostAddr})",
+ s"${probe.osName} ver. ${probe.osVersion}"
+ ),
probe.models.toList.map(m ⇒ s"${b(m.id)}, v${m.version}")
)
@@ -1718,8 +1719,7 @@ object NCCli extends App {
tbl #= (
"Probe ID",
"Uptime",
- "OS",
- "Host",
+ "Host / OS",
"Models Deployed"
)
@@ -1935,6 +1935,9 @@ object NCCli extends App {
case None ⇒ ()
}
+ if (state.accessToken.isDefined)
+ logln(s"REST server signed in with default
'${c("[email protected]")}' user.")
+
val parser = new DefaultParser()
parser.setEofOnUnclosedBracket(Bracket.CURLY, Bracket.ROUND,
Bracket.SQUARE)
@@ -1976,6 +1979,11 @@ object NCCli extends App {
else {
val cmd = words.head
+ val OPTIONAL_GRP = "Optional:"
+ val MANDATORY_GRP = "Mandatory:"
+ val DFTL_USER_GRP = "Default user:"
+ val CMDS_GRP = "Commands:"
+
candidates.addAll(CMDS.find(_.name == cmd) match {
case Some(c) ⇒
c.params.flatMap(param ⇒ {
@@ -1985,7 +1993,7 @@ object NCCli extends App {
names.map(name ⇒ mkCandidate(
id = if (hasVal) name + "=" else name,
disp = name,
- grp = "Parameters:",
+ grp = if (param.optional) OPTIONAL_GRP
else MANDATORY_GRP,
desc = null,
completed = !hasVal)
)
@@ -1995,20 +2003,21 @@ object NCCli extends App {
case None ⇒ Seq.empty[Candidate].asJava
})
- // For 'help' - add additional auto-completion candidates.
+ // For 'help' - add additional auto-completion/suggestion
candidates.
if (cmd == HELP_CMD.name)
candidates.addAll(CMDS.map(c ⇒
s"--cmd=${c.name}").map(s ⇒
mkCandidate(
id = s,
disp = s,
- grp = null,
+ grp = CMDS_GRP,
desc = null,
completed = true
))
.asJava
)
- // For 'rest' - add additional auto-completion candidates.
- else if (cmd == REST_CMD.name) {
+
+ // For 'rest' or 'call' - add '--path'
auto-completion/suggestion candidates.
+ if (cmd == REST_CMD.name || cmd == CALL_CMD.name) {
val pathParam = REST_CMD.findParameterById("path")
val hasPathAlready = words.exists(w ⇒
pathParam.names.exists(x ⇒ w.startsWith(x)))
@@ -2028,6 +2037,85 @@ object NCCli extends App {
.asJava
)
}
+
+ // For 'call' - add additional auto-completion/suggestion
candidates.
+ if (cmd == CALL_CMD.name) {
+ val pathParam = CALL_CMD.findParameterById("path")
+
+ words.find(w ⇒ pathParam.names.exists(x ⇒
w.startsWith(x))) match {
+ case Some(p) ⇒
+ val path = p.substring(p.indexOf('=') + 1)
+
+ REST_SPEC.find(_.path == path) match {
+ case Some(spec) ⇒
+ candidates.addAll(
+ spec.params.map(param ⇒ {
+ mkCandidate(
+ id = s"-${param.name}=",
+ disp = s"-${param.name}",
+ grp = if (param.optional)
OPTIONAL_GRP else MANDATORY_GRP,
+ desc = null,
+ completed = false
+ )
+ })
+ .asJava
+ )
+
+ // Add 'acsTok' auto-suggestion.
+ if (spec.params.exists(_.name ==
"acsTok") && state.accessToken.isDefined)
+ candidates.add(
+ mkCandidate(
+ id =
s"-acsTok=${state.accessToken.get}",
+ disp =
s"-acsTok=${state.accessToken.get}",
+ grp = MANDATORY_GRP,
+ desc = null,
+ completed = true
+ )
+ )
+
+ // Add 'mdlId' auto-suggestion.
+ if (spec.params.exists(_.name ==
"mdlId") && state.probes.nonEmpty)
+ candidates.addAll(
+
state.probes.flatMap(_.models.toList).map(mdl ⇒ {
+ mkCandidate(
+ id =
s"-mdlId=${mdl.name}",
+ disp =
s"-mdlId=${mdl.name}",
+ grp = MANDATORY_GRP,
+ desc = null,
+ completed = true
+ )
+ })
+ .asJava
+ )
+
+ // Add default 'email' and 'passwd'
auto-suggestion for 'signin' path.
+ if (path == "signin") {
+ candidates.add(
+ mkCandidate(
+ id =
"[email protected]",
+ disp =
"[email protected]",
+ grp = DFTL_USER_GRP,
+ desc = null,
+ completed = true
+ )
+ )
+ candidates.add(
+ mkCandidate(
+ id = "-passwd=admin",
+ disp = "-passwd=admin",
+ grp = DFTL_USER_GRP,
+ desc = null,
+ completed = true
+ )
+ )
+ }
+
+ case None ⇒ ()
+ }
+
+ case None ⇒ ()
+ }
+ }
}
}
}