You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/05/10 07:03:20 UTC

[sling-feature-launcher-maven-plugin] 01/01: SLING-10374 optionally wait for user input before stopping the server

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/SLING-10364-wait-for-input
in repository https://gitbox.apache.org/repos/asf/sling-feature-launcher-maven-plugin.git

commit da2100b521847eb06a512cca03fa82b000a4286b
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Mon May 10 09:03:07 2021 +0200

    SLING-10374 optionally wait for user input before stopping the server
---
 pom.xml                                            |  5 +++++
 .../sling/maven/feature/launcher/StopMojo.java     | 23 +++++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 973454f..b83ef51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,6 +74,11 @@
             <version>3.6.0</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-interactivity-api</artifactId>
+            <version>1.0</version>
+        </dependency>
         
         <dependency>
             <groupId>org.apache.maven</groupId>
diff --git a/src/main/java/org/apache/sling/maven/feature/launcher/StopMojo.java b/src/main/java/org/apache/sling/maven/feature/launcher/StopMojo.java
index d8665d8..4d3ec92 100644
--- a/src/main/java/org/apache/sling/maven/feature/launcher/StopMojo.java
+++ b/src/main/java/org/apache/sling/maven/feature/launcher/StopMojo.java
@@ -27,6 +27,8 @@ import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.codehaus.plexus.components.interactivity.Prompter;
+import org.codehaus.plexus.components.interactivity.PrompterException;
 
 @Mojo( name = "stop", defaultPhase = LifecyclePhase.POST_INTEGRATION_TEST)
 public class StopMojo extends AbstractMojo {
@@ -37,9 +39,20 @@ public class StopMojo extends AbstractMojo {
     @Component
     private ProcessTracker processes;
     
+    /**
+     * If {@code true} stopping the server is deferred until you press the Enter key.
+     */
+    @Parameter(property = "feature-launcher.waitForInput", required = false, defaultValue = "false")
+    protected boolean waitForInput;
+
+    @Component
+    private Prompter prompter;
+
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
-        
+        if (waitForInput) {
+            waitForInput();
+        }
         try {
             for ( Launch launch : launches ) {
                 getLog().info("Stopping launch with id " + launch.getId());
@@ -50,4 +63,12 @@ public class StopMojo extends AbstractMojo {
         }
     }
 
+    protected void waitForInput() throws MojoFailureException {
+        // http://stackoverflow.com/a/21977269/5155923
+        try {
+            prompter.prompt("Press Enter to continue");
+        } catch (PrompterException e) {
+            throw new MojoFailureException("Could not prompt for user input. Maven is probably running in non-interactive mode! Do not use parameter 'shouldBlockUntilKeyIsPressed' in that case", e);
+        }
+    }
 }