From 875f1ad175962f895f6a1ada53886308d3e827e9 Mon Sep 17 00:00:00 2001 From: John Steele Date: Tue, 5 Dec 2023 18:55:49 -0800 Subject: [PATCH] Setup process args. Add kill process mechanism. --- .../windup/runtime/kantra/KantraRunner.java | 58 +++++++++++-------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/plugins/org.jboss.tools.windup.runtime/src/org/jboss/tools/windup/runtime/kantra/KantraRunner.java b/plugins/org.jboss.tools.windup.runtime/src/org/jboss/tools/windup/runtime/kantra/KantraRunner.java index a42b6b42..c95317b3 100644 --- a/plugins/org.jboss.tools.windup.runtime/src/org/jboss/tools/windup/runtime/kantra/KantraRunner.java +++ b/plugins/org.jboss.tools.windup.runtime/src/org/jboss/tools/windup/runtime/kantra/KantraRunner.java @@ -5,9 +5,10 @@ import static org.jboss.tools.windup.runtime.WindupRuntimePlugin.logInfo; -import java.io.File; import java.io.IOException; +import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Consumer; import org.apache.commons.exec.CommandLine; @@ -17,42 +18,44 @@ import org.apache.commons.exec.ExecuteWatchdog; import org.apache.commons.exec.LogOutputStream; import org.apache.commons.exec.PumpStreamHandler; -import org.eclipse.core.runtime.IProgressMonitor; import org.jboss.tools.windup.runtime.WindupRuntimePlugin; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; public class KantraRunner { private ExecuteWatchdog watchdog; - public void runKantra(final IProgressMonitor monitor, String[] input, String output, Consumer onMessage, Consumer onComplete, Consumer onFailed) { + public void runKantra(Set inputs, String output, List sources, List targets, Consumer onMessage, Consumer onComplete, Consumer onFailed) { logInfo("Begin start kantra."); //$NON-NLS-1$ - monitor.worked(1); - String windupExecutable = WindupRuntimePlugin.computeWindupHome().resolve("bin").resolve("cli").toString(); //$NON-NLS-1$ //$NON-NLS-2$ + // todo: compute or parameterize from configuration + CommandLine cmdLine = CommandLine.parse("/usr/local/bin/kantra"); + List params = Lists.newArrayList(); + params.add("analyze"); - if (windupExecutable == null) { - WindupRuntimePlugin.logErrorMessage("kantra CLI not specified."); //$NON-NLS-1$ - return; + for (String input : inputs) { + params.add("--input"); + params.add(input); } - boolean executable = new File(windupExecutable).setExecutable(true); - if (!executable) { - WindupRuntimePlugin.logErrorMessage("kantra CLI not executable."); //$NON-NLS-1$ - return; - } + params.add("--output"); + params.add(output); - CommandLine cmdLine = CommandLine.parse(windupExecutable); + for (String source : sources) { + params.add("--source"); + params.add(source); + } - Map env = Maps.newHashMap(); - for (Map.Entry entry : System.getenv().entrySet()) { - env.put(entry.getKey(), entry.getValue()); + for (String target : targets) { + params.add("--target"); + params.add(target); } - cmdLine.addArgument("analyze"); //$NON-NLS-1$ - cmdLine.addArgument("--input"); //$NON-NLS-1$ + + cmdLine.addArguments(params.toArray(new String[params.size()]), true); watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT); ExecuteResultHandler handler = new ExecuteResultHandler() { @@ -61,15 +64,11 @@ public void onProcessFailed(ExecuteException e) { logInfo("kantra process failed:"); //$NON-NLS-1$ logInfo(e.getMessage()); //$NON-NLS-1$ onFailed.accept(e.getMessage()); -// executionBuilder = null; -// notifyServerChanged(); } @Override public void onProcessComplete(int exitValue) { logInfo("kantra process has completed."); //$NON-NLS-1$ onComplete.accept(true); -// executionBuilder = null; -// notifyServerChanged(); } }; DefaultExecutor executor = new DefaultExecutor(); @@ -77,13 +76,17 @@ public void onProcessComplete(int exitValue) { @Override protected void processLine(String line, int logLevel) { logInfo("kantra output: " + line); //$NON-NLS-1$ - monitor.worked(1); onMessage.accept(line); } })); executor.setWatchdog(watchdog); executor.setExitValue(1); - monitor.worked(1); + Map env = Maps.newHashMap(); + for (Map.Entry entry : System.getenv().entrySet()) { + env.put(entry.getKey(), entry.getValue()); + } + // TODO: parameterize somewhere + env.put("PODMAN_BIN", "/usr/local/bin/podman"); try { logInfo("Starting kantra..."); //$NON-NLS-1$ logInfo("Command-line: " + cmdLine); //$NON-NLS-1$ @@ -92,4 +95,9 @@ protected void processLine(String line, int logLevel) { WindupRuntimePlugin.log(e); } } + + public void kill() { + this.watchdog.stop(); + this.watchdog.destroyProcess(); + } }