mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[gradle][IDEA-347975] added a way to pass environment variables from GradleProjectResolverExtension into execution
GitOrigin-RevId: f859b809a08e9ace79985f05045dee492441653d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a3de4aaf59
commit
e851d99b4e
@@ -184,11 +184,12 @@ public final class JavaGradleProjectResolver extends AbstractProjectResolverExte
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enhanceTaskProcessing(@Nullable Project project,
|
||||
@NotNull List<String> taskNames,
|
||||
@NotNull Consumer<String> initScriptConsumer,
|
||||
@NotNull Map<String, String> parameters) {
|
||||
|
||||
public @NotNull Map<String, String> enhanceTaskProcessing(
|
||||
@Nullable Project project,
|
||||
@NotNull List<String> taskNames,
|
||||
@NotNull Consumer<String> initScriptConsumer,
|
||||
@NotNull Map<String, String> parameters
|
||||
) {
|
||||
var isRunAsTest = Boolean.parseBoolean(parameters.get(IS_RUN_AS_TEST_KEY));
|
||||
var isBuiltInTestEventsUsed = Boolean.parseBoolean(parameters.get(IS_BUILT_IN_TEST_EVENTS_USED_KEY));
|
||||
var jvmParametersSetup = parameters.get(JVM_PARAMETERS_SETUP_KEY);
|
||||
@@ -199,6 +200,7 @@ public final class JavaGradleProjectResolver extends AbstractProjectResolverExte
|
||||
initScriptConsumer.consume(initScript);
|
||||
}
|
||||
enhanceTaskProcessing(taskNames, jvmParametersSetup, initScriptConsumer);
|
||||
return Map.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -792,15 +792,17 @@ public final class CommonGradleProjectResolverExtension extends AbstractProjectR
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enhanceTaskProcessing(@Nullable Project project,
|
||||
@NotNull List<String> taskNames,
|
||||
@NotNull Consumer<String> initScriptConsumer,
|
||||
@NotNull Map<String, String> parameters) {
|
||||
public @NotNull Map<String, String> enhanceTaskProcessing(
|
||||
@Nullable Project project,
|
||||
@NotNull List<String> taskNames,
|
||||
@NotNull Consumer<String> initScriptConsumer,
|
||||
@NotNull Map<String, String> parameters
|
||||
) {
|
||||
initScriptConsumer.consume(GradleInitScriptUtil.loadCommonTasksUtilsScript());
|
||||
|
||||
String dispatchPort = parameters.get(DEBUG_DISPATCH_PORT_KEY);
|
||||
if (dispatchPort == null) {
|
||||
return;
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
String debugOptions = parameters.get(DEBUG_OPTIONS_KEY);
|
||||
@@ -820,6 +822,7 @@ public final class CommonGradleProjectResolverExtension extends AbstractProjectR
|
||||
|
||||
final String script = join(lines, System.lineSeparator());
|
||||
initScriptConsumer.consume(script);
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -161,19 +161,21 @@ public interface GradleProjectResolverExtension extends ParametersEnhancer {
|
||||
String GRADLE_VERSION = "GRADLE_VERSION";
|
||||
|
||||
/**
|
||||
* Allows extension to contribute to init script
|
||||
* Allows an extension to contribute an init script that would be passed into the Gradle execution
|
||||
*
|
||||
* @param project project (if available)
|
||||
* @param taskNames gradle task names to be executed
|
||||
* @param initScriptConsumer consumer of init script text. Must be called to add script txt
|
||||
* @param parameters storage for passing optional named parameters
|
||||
* @return map with environment variables to be passed into the execution
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
default void enhanceTaskProcessing(@Nullable Project project,
|
||||
@NotNull List<String> taskNames,
|
||||
@NotNull Consumer<String> initScriptConsumer,
|
||||
@NotNull Map<String, String> parameters) {
|
||||
default @NotNull Map<String, String> enhanceTaskProcessing(@Nullable Project project,
|
||||
@NotNull List<String> taskNames,
|
||||
@NotNull Consumer<String> initScriptConsumer,
|
||||
@NotNull Map<String, String> parameters) {
|
||||
String jvmParametersSetup = parameters.get(JVM_PARAMETERS_SETUP_KEY);
|
||||
enhanceTaskProcessing(taskNames, jvmParametersSetup, initScriptConsumer);
|
||||
return Map.of();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,6 +346,7 @@ public class GradleTaskManager implements ExternalSystemTaskManager<GradleExecut
|
||||
) {
|
||||
final List<String> initScripts = new ArrayList<>();
|
||||
List<GradleProjectResolverExtension> extensions = GradleProjectResolverUtil.createProjectResolvers(null).toList();
|
||||
Map<String, String> executionEnvironmentVariables = new HashMap<>();
|
||||
for (GradleProjectResolverExtension resolverExtension : extensions) {
|
||||
final String resolverClassName = resolverExtension.getClass().getName();
|
||||
|
||||
@@ -372,7 +373,7 @@ public class GradleTaskManager implements ExternalSystemTaskManager<GradleExecut
|
||||
enhancementParameters.put(GradleProjectResolverExtension.GRADLE_VERSION, gradleVersion.getVersion());
|
||||
}
|
||||
|
||||
resolverExtension.enhanceTaskProcessing(project, taskNames, script -> {
|
||||
Map<String, String> taskProcessingEnvironmentVariables = resolverExtension.enhanceTaskProcessing(project, taskNames, script -> {
|
||||
if (StringUtil.isNotEmpty(script)) {
|
||||
addAllNotNull(
|
||||
initScripts,
|
||||
@@ -381,6 +382,7 @@ public class GradleTaskManager implements ExternalSystemTaskManager<GradleExecut
|
||||
"//");
|
||||
}
|
||||
}, enhancementParameters);
|
||||
executionEnvironmentVariables.putAll(taskProcessingEnvironmentVariables);
|
||||
}
|
||||
|
||||
if (!initScripts.isEmpty()) {
|
||||
@@ -403,6 +405,7 @@ public class GradleTaskManager implements ExternalSystemTaskManager<GradleExecut
|
||||
if (effectiveSettings.getArguments().contains(GradleConstants.INIT_SCRIPT_CMD_OPTION)) {
|
||||
GradleInitScriptUtil.attachTargetPathMapperInitScript(effectiveSettings);
|
||||
}
|
||||
effectiveSettings.withEnvironmentVariables(executionEnvironmentVariables);
|
||||
}
|
||||
|
||||
private static void writeAndAppendScript(@NotNull GradleExecutionSettings effectiveSettings,
|
||||
|
||||
@@ -19,10 +19,12 @@ class KotlinGradleCoroutineDebugProjectResolver : AbstractProjectResolverExtensi
|
||||
private const val MIN_SUPPORTED_GRADLE_VERSION = "4.6" // CommandLineArgumentProvider is available only since Gradle 4.6
|
||||
}
|
||||
|
||||
override fun enhanceTaskProcessing(project: Project?,
|
||||
taskNames: MutableList<String>,
|
||||
initScriptConsumer: Consumer<String>,
|
||||
parameters: Map<String, String>) {
|
||||
override fun enhanceTaskProcessing(
|
||||
project: Project?,
|
||||
taskNames: MutableList<String>,
|
||||
initScriptConsumer: Consumer<String>,
|
||||
parameters: Map<String, String>
|
||||
): Map<String, String> {
|
||||
try {
|
||||
val allowCoroutineAgent = KotlinJvmDebuggerFacade.instance?.isCoroutineAgentAllowedInDebug ?: false
|
||||
val gradleVersion = parameters[GradleProjectResolverExtension.GRADLE_VERSION]?.let { GradleVersion.version(it) }
|
||||
@@ -32,6 +34,7 @@ class KotlinGradleCoroutineDebugProjectResolver : AbstractProjectResolverExtensi
|
||||
} catch (e: Exception) {
|
||||
log.error("Gradle: not possible to attach a coroutine debugger agent.", e)
|
||||
}
|
||||
return emptyMap()
|
||||
}
|
||||
|
||||
private fun setupCoroutineAgentForJvmForkedTestTasks(initScriptConsumer: Consumer<String>, shouldCheckGradleVersion: Boolean) {
|
||||
|
||||
@@ -85,13 +85,14 @@ open class KotlinTestTasksResolver : AbstractProjectResolverExtension() {
|
||||
}
|
||||
|
||||
override fun enhanceTaskProcessing(
|
||||
project: Project?,
|
||||
taskNames: MutableList<String>,
|
||||
initScriptConsumer: Consumer<String>,
|
||||
parameters: MutableMap<String, String>
|
||||
) {
|
||||
if (!Registry.`is`(ENABLED_REGISTRY_KEY))
|
||||
return
|
||||
project: Project?,
|
||||
taskNames: MutableList<String>,
|
||||
initScriptConsumer: Consumer<String>,
|
||||
parameters: MutableMap<String, String>
|
||||
): Map<String, String> {
|
||||
if (!Registry.`is`(ENABLED_REGISTRY_KEY)) {
|
||||
return emptyMap()
|
||||
}
|
||||
|
||||
val isRunAsTest = parameters[GradleProjectResolverExtension.IS_RUN_AS_TEST_KEY].toBoolean()
|
||||
val isBuiltInTestEventsUsed = parameters[GradleProjectResolverExtension.IS_BUILT_IN_TEST_EVENTS_USED_KEY].toBoolean()
|
||||
@@ -110,6 +111,7 @@ open class KotlinTestTasksResolver : AbstractProjectResolverExtension() {
|
||||
|
||||
val jvmParametersSetup = parameters[GradleProjectResolverExtension.JVM_PARAMETERS_SETUP_KEY]
|
||||
enhanceTaskProcessing(taskNames, jvmParametersSetup, initScriptConsumer)
|
||||
return emptyMap()
|
||||
}
|
||||
|
||||
override fun enhanceTaskProcessing(taskNames: MutableList<String>, jvmAgentSetup: String?, initScriptConsumer: Consumer<String>) {
|
||||
|
||||
Reference in New Issue
Block a user