io.sealights.agents.plugin.BldScanrTask Maven / Gradle / Ivy
package io.sealights.agents.plugin;
import java.io.File;
import org.gradle.api.tasks.JavaExec;
import org.gradle.api.tasks.compile.JavaCompile;
import io.sealights.onpremise.agents.java.agent.plugins.engine.api.PluginExecData;
import io.sealights.onpremise.agents.java.agent.plugins.engine.clibuilders.TokenValueFormatter;
public class BldScanrTask extends SealightsTask {
private JavaCompile compileTask;
public BldScanrTask(JavaCompile compileTask, SealightsPluginExtention extention) {
super(extention);
this.compileTask = compileTask;
}
@Override
protected boolean executePluginGoal() {
if (getExtention().isRunTestOnly()) {
getLogger().info("SeaLights is in test-only mode. Skipping Build Scanner.");
return true;
}
if (getParams().getGeneralParams().getWorkspacepath() == null) {
getParams().getGeneralParams().setWorkspacepath(compileTask.getDestinationDir().getName());
}
return getPluginEngine().executeBldScanrGoal(this).isOk();
}
@Override
public void onSuccess(PluginExecData pluginExecData) {
super.onSuccess(pluginExecData);
runBuildScanner();
}
private boolean runBuildScanner() {
boolean firstExecution = getExtention().getExecData().isNullModuleDone();
String executionName = "build-scan-" + compileTask.getName();
if (firstExecution) {
executionName += "-null-module";
}
try {
JavaExec buildScanrExecTask = getExtention().getProject().getTasks().create(executionName, JavaExec.class);
buildScanrExecTask.setArgs(getExecData().getBldScanrCliData().getGradlePluginJvmArg());
buildScanrExecTask.setSystemProperties(getExecData().getBldScanrCliData().getGradlePluginSysProperties());
buildScanrExecTask.setMain("io.sealights.javaBuildAgent.App");
File bldScanrJar = new File(getExecData().getBldScanrLocation());
buildScanrExecTask.classpath(bldScanrJar.getAbsolutePath());
buildScanrExecTask.setDescription("Run SeaLights Build Scanner");
getLogger().info("JavaExec CLI:{}", TokenValueFormatter.toStringArgsWithToken(buildScanrExecTask.getCommandLine()));
buildScanrExecTask.execute();
return true;
}
catch(Exception e) {
getLogger().error("Failed to run SeaLights Build Scanner. Error: ", e);
return false;
}
}
@Override
public String getName() {
return "build scanner";
}
}