ui: implemented showing gradle errors in UI
This commit is contained in:
@@ -1,17 +1,16 @@
|
|||||||
package com.sourcetrail.gradle;
|
package com.sourcetrail.gradle;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gradle.api.GradleException;
|
||||||
import org.gradle.tooling.BuildLauncher;
|
import org.gradle.tooling.BuildLauncher;
|
||||||
import org.gradle.tooling.GradleConnector;
|
import org.gradle.tooling.GradleConnector;
|
||||||
import org.gradle.tooling.ProjectConnection;
|
import org.gradle.tooling.ProjectConnection;
|
||||||
@@ -20,36 +19,50 @@ public class InfoRetriever
|
|||||||
{
|
{
|
||||||
public static String getMainSrcDirs(String projectRootPath, String initScriptPath)
|
public static String getMainSrcDirs(String projectRootPath, String initScriptPath)
|
||||||
{
|
{
|
||||||
String ret = "";
|
try
|
||||||
|
|
||||||
List<String> srcDirs = getSrcDirs("printMainSrcDirs", projectRootPath, initScriptPath);
|
|
||||||
for (int i = 0; i < srcDirs.size(); i++)
|
|
||||||
{
|
{
|
||||||
if (i != 0)
|
String ret = "";
|
||||||
|
|
||||||
|
List<String> srcDirs = getSrcDirs("printMainSrcDirs", projectRootPath, initScriptPath);
|
||||||
|
for (int i = 0; i < srcDirs.size(); i++)
|
||||||
{
|
{
|
||||||
ret += ";";
|
if (i != 0)
|
||||||
|
{
|
||||||
|
ret += ";";
|
||||||
|
}
|
||||||
|
ret += srcDirs.get(i);
|
||||||
}
|
}
|
||||||
ret += srcDirs.get(i);
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
catch (GradleException e)
|
||||||
|
{
|
||||||
|
return "[ERROR] " + e.getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getTestSrcDirs(String projectRootPath, String initScriptPath)
|
public static String getTestSrcDirs(String projectRootPath, String initScriptPath)
|
||||||
{
|
{
|
||||||
String ret = "";
|
try
|
||||||
|
|
||||||
List<String> srcDirs = getSrcDirs("printTestSrcDirs", projectRootPath, initScriptPath);
|
|
||||||
for (int i = 0; i < srcDirs.size(); i++)
|
|
||||||
{
|
{
|
||||||
if (i != 0)
|
String ret = "";
|
||||||
|
|
||||||
|
List<String> srcDirs = getSrcDirs("printTestSrcDirs", projectRootPath, initScriptPath);
|
||||||
|
for (int i = 0; i < srcDirs.size(); i++)
|
||||||
{
|
{
|
||||||
ret += ";";
|
if (i != 0)
|
||||||
|
{
|
||||||
|
ret += ";";
|
||||||
|
}
|
||||||
|
ret += srcDirs.get(i);
|
||||||
}
|
}
|
||||||
ret += srcDirs.get(i);
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
catch (GradleException e)
|
||||||
|
{
|
||||||
|
return "[ERROR] " + e.getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void copyCompileLibs(String projectRootPath, String initScriptPath, String targetPath)
|
public static void copyCompileLibs(String projectRootPath, String initScriptPath, String targetPath)
|
||||||
@@ -84,7 +97,7 @@ public class InfoRetriever
|
|||||||
return paths;
|
return paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String executeTask(String taskName, String projectRootPath, String initScriptPath, List<String> additionalArguments)
|
private static String executeTask(String taskName, String projectRootPath, String initScriptPath, List<String> additionalArguments) throws GradleException
|
||||||
{
|
{
|
||||||
ProjectConnection connection = GradleConnector
|
ProjectConnection connection = GradleConnector
|
||||||
.newConnector()
|
.newConnector()
|
||||||
@@ -99,7 +112,7 @@ public class InfoRetriever
|
|||||||
List<String> arguments = new ArrayList<>();
|
List<String> arguments = new ArrayList<>();
|
||||||
arguments.add("--init-script");
|
arguments.add("--init-script");
|
||||||
arguments.add(initScriptPath);
|
arguments.add(initScriptPath);
|
||||||
// arguments.add("-q");
|
arguments.add("-q");
|
||||||
|
|
||||||
if (additionalArguments != null)
|
if (additionalArguments != null)
|
||||||
{
|
{
|
||||||
@@ -124,8 +137,7 @@ public class InfoRetriever
|
|||||||
|
|
||||||
if (!errorStream.toString().isEmpty())
|
if (!errorStream.toString().isEmpty())
|
||||||
{
|
{
|
||||||
// TODO: handle this by sending the error to cpp
|
throw new GradleException(errorStream.toString());
|
||||||
System.out.println("Error: " + errorStream.toString()); // TODO: remove this later
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return outputStream.toString();
|
return outputStream.toString();
|
||||||
|
|||||||
@@ -6,9 +6,11 @@
|
|||||||
#include "data/parser/java/JavaEnvironmentFactory.h"
|
#include "data/parser/java/JavaEnvironmentFactory.h"
|
||||||
#include "settings/ApplicationSettings.h"
|
#include "settings/ApplicationSettings.h"
|
||||||
#include "utility/logging/logging.h"
|
#include "utility/logging/logging.h"
|
||||||
|
#include "utility/messaging/type/MessageStatus.h"
|
||||||
#include "utility/ResourcePaths.h"
|
#include "utility/ResourcePaths.h"
|
||||||
#include "utility/utilityJava.h"
|
#include "utility/utilityJava.h"
|
||||||
#include "utility/utilityString.h"
|
#include "utility/utilityString.h"
|
||||||
|
#include "Application.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@@ -57,9 +59,21 @@ namespace utility
|
|||||||
{
|
{
|
||||||
std::shared_ptr<JavaEnvironment> javaEnvironment = JavaEnvironmentFactory::getInstance()->createEnvironment();
|
std::shared_ptr<JavaEnvironment> javaEnvironment = JavaEnvironmentFactory::getInstance()->createEnvironment();
|
||||||
{
|
{
|
||||||
std::string mainSrcDirs = "";
|
std::string output = "";
|
||||||
javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getMainSrcDirs", mainSrcDirs, projectDirectoryPath.str(), gradleInitScriptPath);
|
javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getMainSrcDirs", output, projectDirectoryPath.str(), gradleInitScriptPath);
|
||||||
for (const std::string mainSrcDir : utility::splitToVector(mainSrcDirs, ";"))
|
|
||||||
|
if (utility::isPrefix("[ERROR]", utility::trim(output)))
|
||||||
|
{
|
||||||
|
// TODO: move error handling to caller of this function
|
||||||
|
const std::string dialogMessage =
|
||||||
|
"The following error occurred while executing a Maven command:\n\n" + utility::replace(output, "\r\n", "\n");
|
||||||
|
MessageStatus(dialogMessage, true, false).dispatch();
|
||||||
|
Application::getInstance()->handleDialog(dialogMessage);
|
||||||
|
|
||||||
|
return std::vector<FilePath>();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const std::string mainSrcDir : utility::splitToVector(output, ";"))
|
||||||
{
|
{
|
||||||
uncheckedDirectories.insert(mainSrcDir);
|
uncheckedDirectories.insert(mainSrcDir);
|
||||||
}
|
}
|
||||||
@@ -67,9 +81,21 @@ namespace utility
|
|||||||
|
|
||||||
if (addTestDirectories)
|
if (addTestDirectories)
|
||||||
{
|
{
|
||||||
std::string testSrcDirs = "";
|
std::string output = "";
|
||||||
javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getTestSrcDirs", testSrcDirs, projectDirectoryPath.str(), gradleInitScriptPath);
|
javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getTestSrcDirs", output, projectDirectoryPath.str(), gradleInitScriptPath);
|
||||||
for (const std::string testSrcDir : utility::splitToVector(testSrcDirs, ";"))
|
|
||||||
|
if (utility::isPrefix("[ERROR]", utility::trim(output)))
|
||||||
|
{
|
||||||
|
// TODO: move error handling to caller of this function
|
||||||
|
const std::string dialogMessage =
|
||||||
|
"The following error occurred while executing a Maven command:\n\n" + utility::replace(output, "\r\n", "\n");
|
||||||
|
MessageStatus(dialogMessage, true, false).dispatch();
|
||||||
|
Application::getInstance()->handleDialog(dialogMessage);
|
||||||
|
|
||||||
|
return std::vector<FilePath>();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const std::string testSrcDir : utility::splitToVector(output, ";"))
|
||||||
{
|
{
|
||||||
uncheckedDirectories.insert(testSrcDir);
|
uncheckedDirectories.insert(testSrcDir);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user