mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
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:
parent
c43d91598e
commit
3e6eb6fec8
@ -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.
|
||||
|
@ -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)) {
|
||||
|
@ -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 {
|
||||
|
@ -99,7 +99,7 @@ public class InitCommandTests {
|
||||
@Test
|
||||
public void runOptions() throws Exception {
|
||||
SpringCli cli = new SpringCli();
|
||||
InitCommand command = cli.getInitCommand();
|
||||
InitCommand command = new InitCommand(cli);
|
||||
command.run("src/test/resources/commands/options.groovy");
|
||||
cli.find("foo").run("--foo=bar", "--bar=123");
|
||||
assertTrue(this.output.toString().contains("Hello Foo: bar=123"));
|
||||
|
@ -44,7 +44,7 @@ public class ScriptCommandTests {
|
||||
public void init() {
|
||||
this.classLoader = Thread.currentThread().getContextClassLoader();
|
||||
this.cli = new SpringCli();
|
||||
this.init = this.cli.getInitCommand();
|
||||
this.init = new InitCommand(this.cli);
|
||||
executed = false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user