Remove support for InitCommand outside REPL

In this commit we retain "init" as a command inside the ShellCommand
but not on the bash command line.

Seems to have an impact on performance so relevant to gh-212.
This commit is contained in:
Dave Syer
2014-01-14 13:27:40 +00:00
parent c43d91598e
commit 3e6eb6fec8
5 changed files with 9 additions and 17 deletions

View File

@@ -24,10 +24,10 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.Set;
import org.springframework.boot.cli.command.AbstractCommand;
import org.springframework.boot.cli.command.InitCommand;
/**
* Spring Command Line Interface. This is the main entry-point for the Spring command line
@@ -54,28 +54,20 @@ public class SpringCli {
private String displayName = CLI_APP + " ";
private InitCommand init;
private Map<String, Command> commandMap = new HashMap<String, Command>();
/**
* Create a new {@link SpringCli} implementation with the default set of commands.
*/
public SpringCli(String... args) {
try {
this.init = new InitCommand(this);
this.init.run(args);
}
catch (Exception e) {
throw new IllegalStateException("Cannot init with those args", e);
for (CommandFactory factory : ServiceLoader.load(CommandFactory.class)) {
for (Command command : factory.getCommands(this)) {
register(command);
}
}
addBaseCommands();
}
public InitCommand getInitCommand() {
return this.init;
}
/**
* Set the command available to the CLI. Primarily used to support testing. NOTE: The
* 'help' command will be automatically provided in addition to this list.

View File

@@ -154,7 +154,7 @@ public class InitCommand extends OptionParsingCommand {
enhanced = true;
}
if (this.cli.getCommands().isEmpty() || enhanced) {
if (enhanced) {
for (CommandFactory factory : ServiceLoader.load(CommandFactory.class,
loader)) {

View File

@@ -99,7 +99,7 @@ public class ShellCommand extends AbstractCommand {
PromptCommand prompt = new PromptCommand(this);
cli.register(prompt);
cli.register(cli.getInitCommand());
cli.register(new InitCommand(cli));
}
private ConsoleReader createConsoleReader() throws IOException {