summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/cli/GenericCommandMode.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/main/java/bjc/utils/cli/GenericCommandMode.java')
-rw-r--r--base/src/main/java/bjc/utils/cli/GenericCommandMode.java33
1 files changed, 16 insertions, 17 deletions
diff --git a/base/src/main/java/bjc/utils/cli/GenericCommandMode.java b/base/src/main/java/bjc/utils/cli/GenericCommandMode.java
index 328bbee..3642137 100644
--- a/base/src/main/java/bjc/utils/cli/GenericCommandMode.java
+++ b/base/src/main/java/bjc/utils/cli/GenericCommandMode.java
@@ -5,7 +5,7 @@ import java.util.function.BiConsumer;
import java.util.function.Consumer;
import bjc.funcdata.FunctionalMap;
-import bjc.funcdata.IMap;
+import bjc.funcdata.MapEx;
/**
* A general command mode, with a customizable set of commands.
@@ -18,12 +18,12 @@ import bjc.funcdata.IMap;
*/
public class GenericCommandMode implements CommandMode {
/* Contains the commands this mode handles. */
- private final IMap<String, Command> commandHandlers;
+ private final MapEx<String, Command> commandHandlers;
/* Commands to execute in every mode. */
- private final IMap<String, Command> defaultHandlers;
+ private final MapEx<String, Command> defaultHandlers;
/* Contains help topics without an associated command */
- private final IMap<String, CommandHelp> helpTopics;
+ private final MapEx<String, CommandHelp> helpTopics;
/* The action to execute upon encountering an unknown command */
private BiConsumer<String, String[]> unknownCommandHandler;
@@ -55,12 +55,12 @@ public class GenericCommandMode implements CommandMode {
throw new NullPointerException("Error output source must be non-null");
this.normalOutput = normalOutput;
- this.errorOutput = errorOutput;
+ this.errorOutput = errorOutput;
/* Initialize maps so that they sort in alphabetical order. */
commandHandlers = new FunctionalMap<>(new TreeMap<>());
defaultHandlers = new FunctionalMap<>(new TreeMap<>());
- helpTopics = new FunctionalMap<>(new TreeMap<>());
+ helpTopics = new FunctionalMap<>(new TreeMap<>());
/* Setup default commands. */
setupDefaultCommands();
@@ -84,17 +84,16 @@ public class GenericCommandMode implements CommandMode {
if (commandName == null) {
throw new NullPointerException("Command name must not be null");
} else if (aliasName == null) {
- String msg = "Alias name must not be null";
- throw new NullPointerException(msg);
+ throw new NullPointerException("Alias name must not be null");
} else if (!commandHandlers.containsKey(commandName)
&& !defaultHandlers.containsKey(commandName)) {
- String msg = String.format("Cannot alias non-existant command '%s'",
+ String msg = String.format("Cannot alias non-existing command '%s'",
commandName);
throw new IllegalArgumentException(msg);
} else if (commandHandlers.containsKey(aliasName)
|| defaultHandlers.containsKey(aliasName)) {
String msg = String.format(
- "Cannot bind alias '%s' to an already bound command.", aliasName);
+ "Cannot bind alias '%s' to an already used name.", aliasName);
throw new IllegalArgumentException(msg);
} else {
/* The command that will be aliased. */
@@ -102,9 +101,9 @@ public class GenericCommandMode implements CommandMode {
/* Get the alias. */
if (defaultHandlers.containsKey(commandName)) {
- aliasedCommand = defaultHandlers.get(commandName).aliased();
+ aliasedCommand = defaultHandlers.get(commandName).get().aliased();
} else {
- aliasedCommand = commandHandlers.get(commandName).aliased();
+ aliasedCommand = commandHandlers.get(commandName).get().aliased();
}
commandHandlers.put(aliasName, aliasedCommand);
@@ -262,16 +261,16 @@ public class GenericCommandMode implements CommandMode {
private void doHelpCommand(final String commandName) {
if (commandHandlers.containsKey(commandName)) {
final String desc
- = commandHandlers.get(commandName).getHelp().getDescription();
+ = commandHandlers.get(commandName).get().getHelp().getDescription();
normalOutput.accept("\n" + desc);
} else if (defaultHandlers.containsKey(commandName)) {
final String desc
- = defaultHandlers.get(commandName).getHelp().getDescription();
+ = defaultHandlers.get(commandName).get().getHelp().getDescription();
normalOutput.accept("\n" + desc);
} else if (helpTopics.containsKey(commandName)) {
- normalOutput.accept("\n" + helpTopics.get(commandName).getDescription());
+ normalOutput.accept("\n" + helpTopics.get(commandName).get().getDescription());
} else {
String msg = String.format("ERROR: No help available for '%s'", commandName);
@@ -371,9 +370,9 @@ public class GenericCommandMode implements CommandMode {
normalOutput.accept("\n");
if (defaultHandlers.containsKey(command))
- return defaultHandlers.get(command).getHandler().handle(args);
+ return defaultHandlers.get(command).get().getHandler().handle(args);
else if (commandHandlers.containsKey(command))
- return commandHandlers.get(command).getHandler().handle(args);
+ return commandHandlers.get(command).get().getHandler().handle(args);
else {
if (args != null) {
String argString = String.join(", ", args);