summaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>2017-09-05 12:10:41 +0530
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>2017-09-05 12:14:18 +0530
commit60e988d324475b22fb273b0e1cba7a1481fa0082 (patch)
tree7744a3f0712a45a2d16a422554f0ab9113078555 /main/src
parente63b60585fd30794d8d8f3fb4b452654d757f59f (diff)
Add set unset directive
CLI-2 Change-Id: I70ca564cc2c41508bb209b5fae54104aba13a8be Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Diffstat (limited to 'main/src')
-rw-r--r--main/src/main/java/org/onap/cli/main/OnapCli.java98
-rw-r--r--main/src/main/java/org/onap/cli/main/conf/OnapCliConstants.java10
-rw-r--r--main/src/main/resources/onap-readme.txt8
-rw-r--r--main/src/test/java/org/onap/cli/main/OnapCliMainTest.java3
4 files changed, 107 insertions, 12 deletions
diff --git a/main/src/main/java/org/onap/cli/main/OnapCli.java b/main/src/main/java/org/onap/cli/main/OnapCli.java
index b52d89d7..52922277 100644
--- a/main/src/main/java/org/onap/cli/main/OnapCli.java
+++ b/main/src/main/java/org/onap/cli/main/OnapCli.java
@@ -16,13 +16,26 @@
package org.onap.cli.main;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.commons.io.IOUtils;
import org.onap.cli.fw.OnapCommand;
import org.onap.cli.fw.OnapCommandRegistrar;
+import org.onap.cli.fw.conf.Constants;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.error.OnapCommandHelpFailed;
import org.onap.cli.fw.error.OnapCommandWarning;
import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cli.fw.output.OnapCommandResult;
+import org.onap.cli.fw.output.OnapCommandResultAttribute;
+import org.onap.cli.fw.output.OnapCommandResultAttributeScope;
+import org.onap.cli.fw.output.PrintDirection;
+import org.onap.cli.fw.output.ResultType;
import org.onap.cli.main.conf.OnapCliConstants;
import org.onap.cli.main.interactive.StringCompleter;
import org.onap.cli.main.utils.OnapCliUtils;
@@ -30,11 +43,6 @@ import org.onap.cli.main.utils.OnapCliUtils;
import jline.TerminalFactory;
import jline.console.ConsoleReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
/**
* Onap Command Line Interface (CLI).
*
@@ -42,6 +50,7 @@ import java.util.List;
public class OnapCli {
private List<String> args = new ArrayList<>();
+ Map<String, String> paramCache = new HashMap<>();
private int exitCode = -1;
@@ -112,6 +121,50 @@ public class OnapCli {
}
}
+ private String getDirectiveHelp() throws OnapCommandHelpFailed {
+ OnapCommandResult help = new OnapCommandResult();
+ help.setType(ResultType.TABLE);
+ help.setPrintDirection(PrintDirection.LANDSCAPE);
+
+ OnapCommandResultAttribute attr = new OnapCommandResultAttribute();
+ attr.setName(Constants.NAME.toUpperCase());
+ attr.setDescription(Constants.DESCRIPTION);
+ attr.setScope(OnapCommandResultAttributeScope.SHORT);
+ help.getRecords().add(attr);
+
+ OnapCommandResultAttribute attrDesc = new OnapCommandResultAttribute();
+ attrDesc.setName(Constants.DESCRIPTION.toUpperCase());
+ attrDesc.setDescription(Constants.DESCRIPTION);
+ attrDesc.setScope(OnapCommandResultAttributeScope.SHORT);
+ help.getRecords().add(attrDesc);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_CLEAR);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_CLEAR_MSG);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_EXIT);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_EXIT_MSG);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_VERSION);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_VERSION_MSG);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_USE);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_USE_MSG);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_SET);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_SET_MSG);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_UNSET);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_UNSET_MSG);
+
+ attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_HELP);
+ attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_HELP_MSG);
+
+ try {
+ return "\n\nDirectives:\n" + help.print();
+ } catch (OnapCommandException e) {
+ throw new OnapCommandHelpFailed(e);
+ }
+ }
/**
* Handles Interactive Mode.
*/
@@ -122,9 +175,9 @@ public class OnapCli {
OnapCommandRegistrar.getRegistrar().setInteractiveMode(true);
console = createConsoleReader();
String line = null;
+
while ((line = console.readLine()) != null) {
- if (OnapCliConstants.PARAM_INTERACTIVE_EXIT.equalsIgnoreCase(line)
- || OnapCliConstants.PARAM_INTERACTIVE_BYE.equalsIgnoreCase(line)) {
+ if (OnapCliConstants.PARAM_INTERACTIVE_EXIT.equalsIgnoreCase(line)) {
break;
} else if (OnapCliConstants.PARAM_INTERACTIVE_CLEAR.equalsIgnoreCase(line)) {
console.clearScreen();
@@ -148,17 +201,38 @@ public class OnapCli {
} else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_HELP)) {
try {
this.print(OnapCommandRegistrar.getRegistrar().getHelpForEnabledProductVersion());
+ this.print(this.getDirectiveHelp());
} catch (OnapCommandException e) {
this.print(e);
}
} else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_VERSION)) {
this.args = Arrays.asList(new String [] {this.getLongOption(OnapCliConstants.PARAM_VERSION_LONG)});
handleVersion();
+ } else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_SET)) {
+ if (args.size() > 1) {
+ String [] paramEntry = args.get(1).trim().split("=");
+ if (paramEntry.length >= 2) {
+ this.paramCache.put(paramEntry[0].trim(), paramEntry[1].trim());
+ } else {
+ this.print("Please use it in the form of 'set param-name=param-value'");
+ }
+ } else {
+ this.print(this.paramCache.toString());
+ }
+ } else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_UNSET)) {
+ if (args.size() > 1) {
+ for (int i = 1; i <args.size(); i++) {
+ if (this.paramCache.containsKey(args.get(i))) {
+ this.paramCache.remove(args.get(i));
+ }
+ }
+ }
} else {
if (args.size() == 1 && args.get(0).trim().isEmpty()) {
//Ignore blanks // NOSONAR
continue;
}
+
handleCommand();
}
}
@@ -195,7 +269,9 @@ public class OnapCli {
OnapCliConstants.PARAM_INTERACTIVE_CLEAR,
OnapCliConstants.PARAM_INTERACTIVE_USE,
OnapCliConstants.PARAM_INTERACTIVE_HELP,
- OnapCliConstants.PARAM_INTERACTIVE_VERSION);
+ OnapCliConstants.PARAM_INTERACTIVE_VERSION,
+ OnapCliConstants.PARAM_INTERACTIVE_SET,
+ OnapCliConstants.PARAM_INTERACTIVE_UNSET);
console.addCompleter(strCompleter);
console.setPrompt(OnapCliConstants.PARAM_INTERACTIVE_PROMPT);
} catch (OnapCommandException e) { // NOSONAR
@@ -236,6 +312,12 @@ public class OnapCli {
}
}
+ for (OnapCommandParameter param: cmd.getParameters()) {
+ if (this.paramCache.containsKey(param.getLongOption())) {
+ param.setValue(this.paramCache.get(param.getLongOption()));
+ }
+ }
+
OnapCliUtils.populateParams(cmd.getParameters(), args);
OnapCommandResult result = cmd.execute();
this.print(result.getDebugInfo());
diff --git a/main/src/main/java/org/onap/cli/main/conf/OnapCliConstants.java b/main/src/main/java/org/onap/cli/main/conf/OnapCliConstants.java
index dfb20c96..2ce12f33 100644
--- a/main/src/main/java/org/onap/cli/main/conf/OnapCliConstants.java
+++ b/main/src/main/java/org/onap/cli/main/conf/OnapCliConstants.java
@@ -29,11 +29,19 @@ public final class OnapCliConstants {
public static final String PARAM_INTERACTIVE_PROMPT = "onap>";
public static final String PARAM_INTERACTIVE_EXIT = "exit";
- public static final String PARAM_INTERACTIVE_BYE = "bye";
+ public static final String PARAM_INTERACTIVE_EXIT_MSG = "To exit from the session.";
public static final String PARAM_INTERACTIVE_CLEAR = "clear";
+ public static final String PARAM_INTERACTIVE_CLEAR_MSG = "To clear the screen";
public static final String PARAM_INTERACTIVE_USE = "use";
+ public static final String PARAM_INTERACTIVE_USE_MSG = "To set the current product version, more details please check version";
public static final String PARAM_INTERACTIVE_HELP = "help";
+ public static final String PARAM_INTERACTIVE_HELP_MSG = "To get the help details of supported commands";
public static final String PARAM_INTERACTIVE_VERSION = "version";
+ public static final String PARAM_INTERACTIVE_VERSION_MSG = "To see the version details";
+ public static final String PARAM_INTERACTIVE_SET = "set";
+ public static final String PARAM_INTERACTIVE_SET_MSG = "To set the parameter values. Once its set, will be available for all commands in current session.";
+ public static final String PARAM_INTERACTIVE_UNSET = "unset";
+ public static final String PARAM_INTERACTIVE_UNSET_MSG = "To unset the parameter value in current session.";
public static final String PARAM_INTERACTIVE_ARG_SPLIT_PATTERN = "\\s+";
private OnapCliConstants(){}
diff --git a/main/src/main/resources/onap-readme.txt b/main/src/main/resources/onap-readme.txt
index 1784a348..668d7584 100644
--- a/main/src/main/resources/onap-readme.txt
+++ b/main/src/main/resources/onap-readme.txt
@@ -1,5 +1,13 @@
Onap Command-line interface (CLI).
+ ____ __ ___
+ ___ _ __ __ _ _ __ / ___| | |_ _|
+ / _ \| '_ \ / _` | '_ \ | | | | | |
+| (_) | | | | (_| | |_) | | |___| |___ | |
+ \___/|_| |_|\__,_| .__/ \____|_____|___|
+ |_|
+
+
One Command to command whole Onap !! It provides the unified commands
to access and operate Onap functionalities. To use this CLI, please
configure the following environment variables:
diff --git a/main/src/test/java/org/onap/cli/main/OnapCliMainTest.java b/main/src/test/java/org/onap/cli/main/OnapCliMainTest.java
index a94252ee..05dd7d4c 100644
--- a/main/src/test/java/org/onap/cli/main/OnapCliMainTest.java
+++ b/main/src/test/java/org/onap/cli/main/OnapCliMainTest.java
@@ -131,9 +131,6 @@ public class OnapCliMainTest {
mockConsole("exit");
cli.handleInteractive();
- mockConsole("bye");
- cli.handleInteractive();
-
mockConsole("clear");
try {
cli.handleInteractive();