Remove the "shell" command from the completions, and allow empty lines

Even though you couldn't run a "shell" inside a "shell", the completion still
assumed you could :(

On the way - fixing error on empty lines: when you just press "enter", the shell should ignore it rather than try to run it as a command (and getting an error, obviously)

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191605029
This commit is contained in:
guyben 2018-04-04 09:57:18 -07:00 committed by Ben McIlwain
parent 3218a9b77e
commit 3338b91c84
2 changed files with 13 additions and 12 deletions

View file

@ -89,16 +89,6 @@ final class RegistryCli implements AutoCloseable, CommandRunner {
jcommander.addConverterFactory(new ParameterFactory());
jcommander.setProgramName(programName);
// Create the "help" and "shell" commands (these are special in that they don't have a default
// constructor).
jcommander.addCommand("help", new HelpCommand(jcommander));
ShellCommand shellCommand = null;
if (isFirstUse) {
shellCommand = new ShellCommand(this);
jcommander.addCommand("shell", shellCommand);
isFirstUse = false;
}
// Create all command instances. It would be preferrable to do this in the constructor, but
// JCommander mutates the command instances and doesn't reset them so we have to do it for every
// run.
@ -111,8 +101,17 @@ final class RegistryCli implements AutoCloseable, CommandRunner {
throw new RuntimeException(e);
}
if (shellCommand != null) {
// Create the "help" and "shell" commands (these are special in that they don't have a default
// constructor).
jcommander.addCommand("help", new HelpCommand(jcommander));
ShellCommand shellCommand = null;
if (isFirstUse) {
isFirstUse = false;
shellCommand = new ShellCommand(this);
// We have to build the completions based on the jcommander *before* we add the "shell"
// command - to avoid completion for the "shell" command itself.
shellCommand.buildCompletions(jcommander);
jcommander.addCommand("shell", shellCommand);
}
try {