You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2024/10/24 11:50:37 UTC
(maven) branch master updated: [MNG-8342] Add command line and terminal information when verbose (#1840)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 69c6a3f95b [MNG-8342] Add command line and terminal information when verbose (#1840)
69c6a3f95b is described below
commit 69c6a3f95b51537194e2514d7025efe2e09508da
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Oct 24 13:50:30 2024 +0200
[MNG-8342] Add command line and terminal information when verbose (#1840)
---
.../apache/maven/cling/invoker/LookupInvoker.java | 49 ++++++++++++++++++----
.../org/apache/maven/cli/CLIReportingUtils.java | 11 +++++
2 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java b/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
index 6f18d0b365..e645ca9989 100644
--- a/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
+++ b/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
@@ -72,6 +72,7 @@ import org.apache.maven.cli.transfer.Slf4jMavenTransferListener;
import org.apache.maven.cling.invoker.mvn.ProtoSession;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.internal.impl.SettingsUtilsV4;
+import org.apache.maven.jline.FastTerminal;
import org.apache.maven.jline.MessageUtils;
import org.apache.maven.logging.LoggingOutputStream;
import org.apache.maven.logging.api.LogLevelRecorder;
@@ -79,6 +80,8 @@ import org.apache.maven.slf4j.MavenSimpleLogger;
import org.eclipse.aether.transfer.TransferListener;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
+import org.jline.terminal.impl.AbstractPosixTerminal;
+import org.jline.terminal.spi.TerminalExt;
import org.slf4j.ILoggerFactory;
import org.slf4j.LoggerFactory;
import org.slf4j.spi.LocationAwareLogger;
@@ -409,26 +412,56 @@ public abstract class LookupInvoker<
}
protected void helpOrVersionAndMayExit(C context) throws Exception {
- Consumer<String> writer = determineWriter(context);
R invokerRequest = context.invokerRequest;
if (invokerRequest.options().help().isPresent()) {
+ Consumer<String> writer = determineWriter(context);
invokerRequest.options().displayHelp(context.invokerRequest.parserRequest(), writer);
throw new ExitException(0);
}
if (invokerRequest.options().showVersionAndExit().isPresent()) {
- if (invokerRequest.options().quiet().orElse(false)) {
- writer.accept(CLIReportingUtils.showVersionMinimal());
- } else {
- writer.accept(CLIReportingUtils.showVersion());
- }
+ showVersion(context);
throw new ExitException(0);
}
}
+ protected void showVersion(C context) {
+ Consumer<String> writer = determineWriter(context);
+ R invokerRequest = context.invokerRequest;
+ if (invokerRequest.options().quiet().orElse(false)) {
+ writer.accept(CLIReportingUtils.showVersionMinimal());
+ } else if (invokerRequest.options().verbose().orElse(false)) {
+ writer.accept(CLIReportingUtils.showVersion(
+ ProcessHandle.current().info().commandLine().orElse(null), describe(context.terminal)));
+
+ } else {
+ writer.accept(CLIReportingUtils.showVersion());
+ }
+ }
+
+ protected String describe(Terminal terminal) {
+ if (terminal == null) {
+ return null;
+ }
+ if (terminal instanceof FastTerminal ft) {
+ terminal = ft.getTerminal();
+ }
+ List<String> subs = new ArrayList<>();
+ subs.add("type=" + terminal.getType());
+ if (terminal instanceof TerminalExt te) {
+ subs.add("provider=" + te.getProvider().name());
+ }
+ if (terminal instanceof AbstractPosixTerminal pt) {
+ subs.add("pty=" + pt.getPty().getClass().getName());
+ }
+ return terminal.getClass().getSimpleName() + " (" + String.join(", ", subs) + ")";
+ }
+
protected void preCommands(C context) throws Exception {
Options mavenOptions = context.invokerRequest.options();
- if (mavenOptions.verbose().orElse(false) || mavenOptions.showVersion().orElse(false)) {
- determineWriter(context).accept(CLIReportingUtils.showVersion());
+ boolean verbose = mavenOptions.verbose().orElse(false);
+ boolean version = mavenOptions.showVersion().orElse(false);
+ if (verbose || version) {
+ showVersion(context);
}
}
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java b/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
index 897fc7c5ec..21d2c63d3d 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
@@ -49,6 +49,10 @@ public final class CLIReportingUtils {
public static final String BUILD_VERSION_PROPERTY = "version";
public static String showVersion() {
+ return showVersion(null, null);
+ }
+
+ public static String showVersion(String commandLine, String terminal) {
final String ls = System.lineSeparator();
Properties properties = getBuildProperties();
StringBuilder version = new StringBuilder(256);
@@ -78,6 +82,13 @@ public final class CLIReportingUtils {
.append("\", family: \"")
.append(Os.OS_FAMILY)
.append('\"');
+ // Add process information using modern Java API
+ if (commandLine != null) {
+ version.append(ls).append("Command line: ").append(commandLine);
+ }
+ if (terminal != null) {
+ version.append(ls).append("Terminal: ").append(terminal);
+ }
return version.toString();
}