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.
pull/234/head
Dave Syer 11 years ago
parent c43d91598e
commit 3e6eb6fec8

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

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

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

@ -99,7 +99,7 @@ public class InitCommandTests {
@Test @Test
public void runOptions() throws Exception { public void runOptions() throws Exception {
SpringCli cli = new SpringCli(); SpringCli cli = new SpringCli();
InitCommand command = cli.getInitCommand(); InitCommand command = new InitCommand(cli);
command.run("src/test/resources/commands/options.groovy"); command.run("src/test/resources/commands/options.groovy");
cli.find("foo").run("--foo=bar", "--bar=123"); cli.find("foo").run("--foo=bar", "--bar=123");
assertTrue(this.output.toString().contains("Hello Foo: bar=123")); assertTrue(this.output.toString().contains("Hello Foo: bar=123"));

@ -44,7 +44,7 @@ public class ScriptCommandTests {
public void init() { public void init() {
this.classLoader = Thread.currentThread().getContextClassLoader(); this.classLoader = Thread.currentThread().getContextClassLoader();
this.cli = new SpringCli(); this.cli = new SpringCli();
this.init = this.cli.getInitCommand(); this.init = new InitCommand(this.cli);
executed = false; executed = false;
} }

Loading…
Cancel
Save