Fix client not responding when using help with an output redirection, fixes #519 (#521)

This commit is contained in:
Guillaume Nodet
2021-12-06 16:40:21 +01:00
committed by GitHub
parent a886562a65
commit ad703938ac
2 changed files with 13 additions and 2 deletions

View File

@@ -250,7 +250,12 @@ public class DefaultClient implements Client {
.or(() -> Optional.ofNullable(parameters.mavenRepoLocal()).map(Path::toString));
repo.ifPresent(r -> Environment.MAVEN_REPO_LOCAL.addCommandLineOption(args, r));
Environment.MVND_TERMINAL_WIDTH.addCommandLineOption(args, Integer.toString(output.getTerminalWidth()));
String width = Optional.ofNullable(Environment.MVND_TERMINAL_WIDTH.removeCommandLineOption(args))
.orElseGet(() -> {
int w = output.getTerminalWidth();
return Integer.toString(w > 0 ? Math.max(w, 80) : 120);
});
Environment.MVND_TERMINAL_WIDTH.addCommandLineOption(args, width);
Path dir;
if (Environment.MAVEN_FILE.hasCommandLineOption(args)) {

View File

@@ -35,6 +35,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.Consumer;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import org.fusesource.jansi.internal.CLibrary;
import org.jline.terminal.Size;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
@@ -147,7 +148,12 @@ public class TerminalOutput implements ClientOutput {
public TerminalOutput(boolean noBuffering, int rollingWindowSize, Path logFile) throws IOException {
this.start = System.currentTimeMillis();
this.terminal = TerminalBuilder.terminal();
TerminalBuilder builder = TerminalBuilder.builder();
boolean outRedirected = CLibrary.isatty(0) == 1 && CLibrary.isatty(1) == 0;
if (outRedirected) {
builder.dumb(true);
}
this.terminal = builder.build();
this.dumb = terminal.getType().startsWith("dumb");
this.noBuffering = noBuffering;
this.linesPerProject = rollingWindowSize;