Skip to content

Commit 637f3dc

Browse files
authored
fix(configuration cache): exposeAsEnvironment/SystemProperties() (#499)
1 parent aad3b53 commit 637f3dc

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/main/groovy/com/avast/gradle/dockercompose/ComposeSettings.groovy

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.avast.gradle.dockercompose
22

3+
import com.fasterxml.jackson.core.type.TypeReference
4+
import com.fasterxml.jackson.databind.ObjectMapper
35
import groovy.transform.CompileStatic
46
import groovy.transform.PackageScope
57
import org.gradle.api.Project
68
import org.gradle.api.Task
79
import org.gradle.api.file.DirectoryProperty
10+
import org.gradle.api.file.RegularFile
811
import org.gradle.api.file.RegularFileProperty
912
import org.gradle.api.provider.ListProperty
1013
import org.gradle.api.provider.MapProperty
@@ -89,6 +92,8 @@ abstract class ComposeSettings {
8992
abstract DirectoryProperty getDockerComposeWorkingDirectory()
9093
abstract Property<Duration> getDockerComposeStopTimeout()
9194

95+
private final Provider<RegularFile> servicesInfosFile
96+
9297
@Inject
9398
ComposeSettings(Project project, String name = '', String parentName = '') {
9499
this.nestedName = parentName + name
@@ -157,6 +162,7 @@ abstract class ComposeSettings {
157162

158163
this.dockerExecutor = project.objects.newInstance(DockerExecutor, this)
159164
this.tasksConfigurator = new TasksConfigurator(this, project, name)
165+
servicesInfosFile = tasksConfigurator.upTask.flatMap { it.servicesInfosFile }
160166
}
161167

162168
private static String generateSafeProjectNamePrefix(Project project) {
@@ -223,7 +229,11 @@ abstract class ComposeSettings {
223229
}
224230

225231
Map<String, ServiceInfo> getServicesInfos() {
226-
tasksConfigurator.getServicesInfos()
232+
// Preserve the legacy behavior of returning an empty map if this is called before composeUp succeeds.
233+
// composeUp.servicesInfosFile.map { ... }.get() will fail if called before composeUp completes.
234+
// composeUp.servicesInfosFile.get() will work if called before composeUp completes.
235+
def f = servicesInfosFile.get().asFile
236+
f.exists() ? new ObjectMapper().readValue(f, new TypeReference<Map<String, ServiceInfo>>() {}) : [:]
227237
}
228238

229239
void exposeAsEnvironment(ProcessForkOptions task) {

src/main/groovy/com/avast/gradle/dockercompose/TasksConfigurator.groovy

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,6 @@ class TasksConfigurator {
158158
}
159159
}
160160

161-
@PackageScope
162-
Map<String, ServiceInfo> getServicesInfos() {
163-
upTask.get().servicesInfos
164-
}
165-
166161
@PackageScope
167162
void setupMissingRequiredBy(String taskName, ComposeSettings settings) {
168163
project.tasks

0 commit comments

Comments
 (0)