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

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

commit 74385031c16a2648016cb938dc86693f62041b77
Author: Sergey Kamov <[email protected]>
AuthorDate: Fri Nov 6 09:01:51 2020 +0300

    WIP.
---
 .../nlpcraft/model/tools/cmdline/NCCli.scala       | 107 +++++++++++++++------
 1 file changed, 76 insertions(+), 31 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 c3bae70..e8e5261 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
@@ -1144,8 +1144,8 @@ object NCCli extends App {
                     id = "outputDir",
                     names = Seq("--outputDir", "-d"),
                     value = Some("path"),
-                    optional = false,
-                    desc = "Output dir."
+                    optional = true,
+                    desc = s"Output dir. Default value is ${y("'current 
folder'")}"
                 ),
                 Parameter(
                     id = "baseName",
@@ -1158,24 +1158,45 @@ object NCCli extends App {
                     id = "lang",
                     names = Seq("--lang", "-l"),
                     value = Some("name"),
-                    optional = false,
-                    desc = s"Language name. Supported: ${y("'java'")}, 
${y("'scala'")}, ${y("'groovy'")}, ${y("'kotlin'")}."
+                    optional = true,
+                    desc = s"Language name. Supported: ${y("'java'")}, 
${y("'scala'")}, ${y("'groovy'")}, ${y("'kotlin'")}. Default value is 
${y("'java'")}"
                 ),
                 Parameter(
                     id = "buildTool",
                     names = Seq("--buildTool", "-t"),
                     value = Some("name"),
+                    optional = true,
+                    desc = s"Build tool name. Supported: ${y("'mvn'")}, 
${y("'grape'")}, ${y("'gradle'")}, ${y("'sbt'")}. Default value is 
${y("'mvn'")}"
+                ),
+                Parameter(
+                    id = "packageName",
+                    names = Seq("--packageName", "-p"),
+                    value = Some("name"),
                     optional = false,
-                    desc = s"Build tool name. Supported: ${y("'mvn'")}, 
${y("'grape'")}, ${y("'gradle'")}, ${y("'sbt'")}."
+                    desc = s"Package name."
+                ),
+                Parameter(
+                    id = "fileType",
+                    names = Seq("--fileType", "-f"),
+                    value = Some("'type'"),
+                    optional = true,
+                    desc = s"Model file type. Supported: ${y("'yaml'")}, 
${y("'json'")}. Default value is ${y("'yaml'")}"
+                ),
+                Parameter(
+                    id = "override",
+                    names = Seq("--override", "-o"),
+                    value = Some("flag"),
+                    optional = true,
+                    desc = s"Override output direcory flag. Supported: 
${y("'true'")}, ${y("'false'")}. Default value is ${y("'false'")}"
                 )
             ),
             examples = Seq(
                 Example(
-                    usage = Seq("> project -d=. -n=myproject -l=java -t=mvn"),
+                    usage = Seq("> project -n=myproject -l=scala -t=sbt 
-p=com.mycompany.nlp"),
                     desc = s"Generates project with given parameters"
                 ),
                 Example(
-                    usage = Seq("> project --outputDir=. --baseName=myproject 
--lang=scala --buildTool=sbt"),
+                    usage = Seq("> project --baseName=myproject --lang=scala 
--buildTool=sbt -packageName=com.mycompany.nlp --override=true"),
                     desc = s"Generates project with given parameters"
                 )
             )
@@ -1193,8 +1214,8 @@ object NCCli extends App {
                     id = "outputDir",
                     names = Seq("--outputDir", "-d"),
                     value = Some("path"),
-                    optional = false,
-                    desc = "Output dir."
+                    optional = true,
+                    desc = s"Output dir. Default value is ${y("'current 
folder'")}"
                 ),
                 Parameter(
                     id = "fileName",
@@ -1206,11 +1227,11 @@ object NCCli extends App {
             ),
             examples = Seq(
                 Example(
-                    usage = Seq("> model -d=. -f=myModel.json"),
+                    usage = Seq("> model -f=myModel.json"),
                     desc = s"Generates model in given output folder and file 
name"
                 ),
                 Example(
-                    usage = Seq("> model --file-name=. 
--file-name=myModel.json"),
+                    usage = Seq("> model --outputDir=c:/tmp 
--fileName=myModel.json"),
                     desc = s"Generates model in given output folder and file 
name"
                 )
             )
@@ -2165,7 +2186,6 @@ object NCCli extends App {
             case None ⇒ error(s"Not signed in. See ${c("'signin'")} command.")
         }
 
-
     /**
      *
      * @param cmd Command descriptor.
@@ -2268,17 +2288,44 @@ object NCCli extends App {
     private def isValidDir(dir: File): Boolean = if (dir.exists()) 
dir.isDirectory else dir.mkdirs()
 
     /**
+      * @param cmd
+      * @param args
+      * @param id
+      */
+    @throws[MissingParameter]
+    private def get(cmd: Command, args: Seq[Argument], id: String): String =
+        args.find(_.parameter.id == id).flatMap(_.value).getOrElse(throw 
MissingParameter(cmd, id))
+
+    /**
+      *
+      * @param args
+      * @param name
+      * @param dflt
+      */
+    private def getOrDefault(args: Seq[Argument], name: String, dflt: String): 
String =
+        args.find(_.parameter.id == name).flatMap(_.value).getOrElse(dflt)
+
+    /**
+      *
+      * @param cmd
+      * @param name
+      * @param value
+      * @param supported
+      */
+    @throws[InvalidParameter]
+    private def check(cmd: Command, name: String, value: String, supported: 
String*): Unit =
+        if (!supported.contains(value))
+            throw InvalidParameter(cmd, name)
+
+    /**
       *
       * @param cmd Command descriptor.
       * @param args Arguments, if any, for this command.
       * @param repl Whether or not executing from REPL.
       */
     private def cmdModel(cmd: Command, args: Seq[Argument], repl: Boolean): 
Unit = {
-        def get(name: String): String =
-            args.find(_.parameter.id == name).flatMap(_.value).getOrElse(throw 
MissingParameter(cmd, name))
-
-        val outputDir = get("outputDir")
-        val fileName = get("fileName")
+        val outputDir = getOrDefault(args, "outputDir", ".")
+        val fileName = get(cmd, args, "fileName")
 
         val idx = fileName.lastIndexOf(".")
 
@@ -2322,20 +2369,18 @@ object NCCli extends App {
       * @param repl Whether or not executing from REPL.
       */
     private def cmdProject(cmd: Command, args: Seq[Argument], repl: Boolean): 
Unit = {
-        def get(name: String): String =
-            args.find(_.parameter.id == name).flatMap(_.value).getOrElse(throw 
MissingParameter(cmd, name))
-
-        val outputDir = get("outputDir")
-        val baseName = get("baseName")
-        val lang = get("lang").toLowerCase
-        val buildTool = get("buildTool").toLowerCase
-
-        def check(name: String, value: String, supported: String*): Unit =
-           if (!supported.contains(value))
-               throw InvalidParameter(cmd, name)
-
-        check("lang", lang, "java", "scala", "groovy", "kotlin")
-        check("buildTool", buildTool, "mvn", "grape", "gradle", "sbt")
+        val outputDir = getOrDefault(args, "outputDir", ".")
+        val baseName = get(cmd, args,"baseName")
+        val lang = getOrDefault(args,"lang", "java").toLowerCase
+        val buildTool = getOrDefault(args,"buildTool", "mvn").toLowerCase
+        val packageName = get(cmd, args,"packageName").toLowerCase
+        val fileType = getOrDefault(args,"fileType", "yaml").toLowerCase
+        val overrideFlag = getOrDefault(args,"override", "false").toLowerCase
+
+        check(cmd, "lang", lang, "java", "scala", "groovy", "kotlin")
+        check(cmd,"buildTool", buildTool, "mvn", "grape", "gradle", "sbt")
+        check(cmd,"fileType", fileType, "yaml", "yml", "json", "js")
+        check(cmd,"overrideFlag", overrideFlag, "true", "false")
 
         val outputDirFull = new File(outputDir, baseName)
 

Reply via email to