From 866f3c2096431535a69425530aad6416e923159e Mon Sep 17 00:00:00 2001 From: Jean-Francois Denise Date: Wed, 16 Jan 2019 18:33:41 +0100 Subject: [PATCH] Fix for GAL-236, CLI, Progress, wrong output for non ansi terminal --- .../main/java/org/jboss/galleon/cli/CliMain.java | 1 + .../main/java/org/jboss/galleon/cli/PmSession.java | 13 +++++++++++-- .../galleon/cli/tracking/BuildLayoutTracker.java | 4 ++-- .../galleon/cli/tracking/CliProgressTracker.java | 11 ++++++++--- .../jboss/galleon/cli/tracking/ConfigsTracker.java | 7 ++++--- .../org/jboss/galleon/cli/tracking/FindTracker.java | 4 ++-- .../galleon/cli/tracking/JBossModulesTracker.java | 7 ++++--- .../jboss/galleon/cli/tracking/PackagesTracker.java | 7 ++++--- .../galleon/cli/tracking/ProgressTrackers.java | 8 ++++---- .../jboss/galleon/cli/tracking/UpdatesTracker.java | 4 ++-- 10 files changed, 42 insertions(+), 24 deletions(-) diff --git a/cli/src/main/java/org/jboss/galleon/cli/CliMain.java b/cli/src/main/java/org/jboss/galleon/cli/CliMain.java index 8f300a72d..a2534fa67 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/CliMain.java +++ b/cli/src/main/java/org/jboss/galleon/cli/CliMain.java @@ -67,6 +67,7 @@ public static void main(String[] args) { try { pmSession = new PmSession(Configuration.parse(arguments.getOptions()), interactive); CliTerminalConnection connection = new CliTerminalConnection(); + pmSession.setConnection(connection.getConnection()); if (arguments.isHelp()) { try { CommandRuntime runtime = diff --git a/cli/src/main/java/org/jboss/galleon/cli/PmSession.java b/cli/src/main/java/org/jboss/galleon/cli/PmSession.java index 79230b8be..c1eceedb9 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/PmSession.java +++ b/cli/src/main/java/org/jboss/galleon/cli/PmSession.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -37,6 +37,7 @@ import org.aesh.io.Resource; import org.aesh.readline.AeshContext; import org.aesh.readline.Prompt; +import org.aesh.terminal.Connection; import org.aesh.utils.Config; import org.eclipse.aether.RepositoryEvent; import org.eclipse.aether.RepositoryListener; @@ -273,7 +274,7 @@ public void metadataDeployed(RepositoryEvent re) { private String promptRoot; private Path previousDir; private boolean commandRunning; - + private Connection connection; public PmSession(Configuration config) throws Exception { this(config, true); } @@ -669,4 +670,12 @@ public FeaturePackLocation getExposedLocation(Path installation, FeaturePackLoca public void enableMavenTrace(boolean b) { mavenListener.setActive(b); } + + void setConnection(Connection connection) { + this.connection = connection; + } + + public boolean isAnsiSupported() { + return connection != null && connection.supportsAnsi(); + } } diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/BuildLayoutTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/BuildLayoutTracker.java index 59fedcd21..213dfe004 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/BuildLayoutTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/BuildLayoutTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,7 +29,7 @@ public class BuildLayoutTracker extends CliProgressTracker { private final PmSession session; public BuildLayoutTracker(PmSession session) { - super("Resolving feature-pack", "Feature-packs resolved."); + super(session, "Resolving feature-pack", "Feature-packs resolved."); this.session = session; } diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/CliProgressTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/CliProgressTracker.java index 21df12fc7..1bdcc884d 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/CliProgressTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/CliProgressTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,6 +20,7 @@ import org.aesh.utils.ANSI; import org.aesh.utils.Config; import org.jboss.galleon.cli.PmCommandInvocation; +import org.jboss.galleon.cli.PmSession; import org.jboss.galleon.progresstracking.ProgressCallback; import org.jboss.galleon.progresstracking.ProgressTracker; @@ -94,7 +95,7 @@ public void processing(String content) { PmCommandInvocation invocation; private final Printer printer; - CliProgressTracker(String msgStart, String msgComplete) { + CliProgressTracker(PmSession session, String msgStart, String msgComplete) { this.msgStart = msgStart; this.msgComplete = msgComplete; if (Config.isWindows()) { @@ -104,7 +105,11 @@ public void processing(String content) { printer = new BasicPrinter(); } } else { - printer = new ANSIPrinter(); + if(session.isAnsiSupported()) { + printer = new ANSIPrinter(); + } else { + printer = new BasicPrinter(); + } } } diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/ConfigsTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/ConfigsTracker.java index 4f81ffc1f..f15ec4ccf 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/ConfigsTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/ConfigsTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,6 +16,7 @@ */ package org.jboss.galleon.cli.tracking; +import org.jboss.galleon.cli.PmSession; import org.jboss.galleon.progresstracking.ProgressTracker; import org.jboss.galleon.state.ProvisionedConfig; @@ -25,8 +26,8 @@ */ public class ConfigsTracker extends CliProgressTracker { - public ConfigsTracker() { - super("Generating configuration", "Configurations generated."); + public ConfigsTracker(PmSession session) { + super(session, "Generating configuration", "Configurations generated."); } @Override diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/FindTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/FindTracker.java index 2c72d6bbc..39e36735f 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/FindTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/FindTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,7 +29,7 @@ public class FindTracker extends CliProgressTracker { private final PmSession session; public FindTracker(PmSession session) { - super("Searching in", "Search done."); + super(session, "Searching in", "Search done."); this.session = session; } diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/JBossModulesTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/JBossModulesTracker.java index 2d295349c..2695c1192 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/JBossModulesTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/JBossModulesTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,6 +16,7 @@ */ package org.jboss.galleon.cli.tracking; +import org.jboss.galleon.cli.PmSession; import org.jboss.galleon.progresstracking.ProgressTracker; import org.jboss.galleon.runtime.PackageRuntime; @@ -26,8 +27,8 @@ */ public class JBossModulesTracker extends CliProgressTracker { - public JBossModulesTracker() { - super("Installing JBoss modules", "JBoss modules installed."); + public JBossModulesTracker(PmSession session) { + super(session, "Installing JBoss modules", "JBoss modules installed."); } @Override diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/PackagesTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/PackagesTracker.java index 5cf3c69eb..aafaf9e72 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/PackagesTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/PackagesTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,6 +16,7 @@ */ package org.jboss.galleon.cli.tracking; +import org.jboss.galleon.cli.PmSession; import org.jboss.galleon.progresstracking.ProgressTracker; import org.jboss.galleon.runtime.PackageRuntime; @@ -25,8 +26,8 @@ */ public class PackagesTracker extends CliProgressTracker { - public PackagesTracker() { - super("Installing packages", "Packages installed."); + public PackagesTracker(PmSession session) { + super(session, "Installing packages", "Packages installed."); } @Override diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/ProgressTrackers.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/ProgressTrackers.java index 44443e32a..5999f3e80 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/ProgressTrackers.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/ProgressTrackers.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -68,12 +68,12 @@ private static void init(PmSession session) { BuildLayoutTracker layout = new BuildLayoutTracker(session); trackers.put(ProvisioningLayoutFactory.TRACK_LAYOUT_BUILD, layout); - PackagesTracker packages = new PackagesTracker(); + PackagesTracker packages = new PackagesTracker(session); trackers.put(ProvisioningLayoutFactory.TRACK_PACKAGES, packages); - trackers.put("JBMODULES", new JBossModulesTracker()); + trackers.put("JBMODULES", new JBossModulesTracker(session)); - ConfigsTracker configs = new ConfigsTracker(); + ConfigsTracker configs = new ConfigsTracker(session); trackers.put(ProvisioningLayoutFactory.TRACK_CONFIGS, configs); UpdatesTracker updates = new UpdatesTracker(session); diff --git a/cli/src/main/java/org/jboss/galleon/cli/tracking/UpdatesTracker.java b/cli/src/main/java/org/jboss/galleon/cli/tracking/UpdatesTracker.java index d85be07ad..ddbe86251 100644 --- a/cli/src/main/java/org/jboss/galleon/cli/tracking/UpdatesTracker.java +++ b/cli/src/main/java/org/jboss/galleon/cli/tracking/UpdatesTracker.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 Red Hat, Inc. and/or its affiliates + * Copyright 2016-2019 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,7 +29,7 @@ public class UpdatesTracker extends CliProgressTracker { private final PmSession session; public UpdatesTracker(PmSession session) { - super("Looking for update for", null); + super(session, "Looking for update for", null); this.session = session; }