From 8c96f5f9a6344c452469bad289a1b1f3fa007fad Mon Sep 17 00:00:00 2001 From: David Pilar Date: Wed, 11 Feb 2026 00:22:58 +0100 Subject: [PATCH] Added JLine NonInteractiveShellRunner configuration #1312 Signed-off-by: David Pilar --- .../core/autoconfigure/JLineShellAutoConfiguration.java | 9 +++++++++ .../core/autoconfigure/ShellRunnerAutoConfiguration.java | 1 + 2 files changed, 10 insertions(+) diff --git a/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/JLineShellAutoConfiguration.java b/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/JLineShellAutoConfiguration.java index 216a9a082..cd89028b3 100644 --- a/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/JLineShellAutoConfiguration.java +++ b/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/JLineShellAutoConfiguration.java @@ -46,6 +46,7 @@ import org.springframework.context.event.ContextClosedEvent; import org.springframework.context.event.EventListener; import org.springframework.core.env.Environment; +import org.springframework.shell.core.NonInteractiveShellRunner; import org.springframework.shell.core.ShellRunner; import org.springframework.shell.core.command.Command; import org.springframework.shell.core.command.CommandParser; @@ -67,6 +68,7 @@ * @author Florent Biville * @author Mahmoud Ben Hassine * @author Piotr Olaszewski + * @author David Pilar */ @AutoConfiguration @EnableConfigurationProperties(SpringShellProperties.class) @@ -109,6 +111,13 @@ public ShellRunner jlineShellRunner(JLineInputProvider inputProvider, CommandPar return jLineShellRunner; } + @Bean + @ConditionalOnProperty(prefix = "spring.shell.interactive", name = "enabled", havingValue = "false") + public ShellRunner jlineNonInteractiveShellRunner(CommandParser commandParser, CommandRegistry commandRegistry, + Terminal terminal) { + return new NonInteractiveShellRunner(commandParser, commandRegistry, terminal.writer()); + } + @Bean public LineReader lineReader(Terminal terminal, Parser parser, CommandCompleter commandCompleter, CommandHighlighter commandHighlighter) { diff --git a/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/ShellRunnerAutoConfiguration.java b/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/ShellRunnerAutoConfiguration.java index 4b9fc6d89..d87d8c87f 100644 --- a/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/ShellRunnerAutoConfiguration.java +++ b/spring-shell-core-autoconfigure/src/main/java/org/springframework/shell/core/autoconfigure/ShellRunnerAutoConfiguration.java @@ -53,6 +53,7 @@ public ShellRunner systemShellRunner(ConsoleInputProvider consoleInputProvider, } @Bean + @ConditionalOnMissingClass("org.springframework.shell.jline.DefaultJLineShellConfiguration") @ConditionalOnProperty(prefix = "spring.shell.interactive", name = "enabled", havingValue = "false") public ShellRunner nonInteractiveShellRunner(CommandParser commandParser, CommandRegistry commandRegistry) { return new NonInteractiveShellRunner(commandParser, commandRegistry);