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 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 ⇒ () + } + } } } }
