Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.avast.gradle.dockercompose

import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.ObjectMapper
import groovy.transform.CompileStatic
import groovy.transform.PackageScope
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFile
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.MapProperty
Expand Down Expand Up @@ -89,6 +92,8 @@ abstract class ComposeSettings {
abstract DirectoryProperty getDockerComposeWorkingDirectory()
abstract Property<Duration> getDockerComposeStopTimeout()

private final Provider<RegularFile> servicesInfosFile

@Inject
ComposeSettings(Project project, String name = '', String parentName = '') {
this.nestedName = parentName + name
Expand Down Expand Up @@ -157,6 +162,7 @@ abstract class ComposeSettings {

this.dockerExecutor = project.objects.newInstance(DockerExecutor, this)
this.tasksConfigurator = new TasksConfigurator(this, project, name)
servicesInfosFile = tasksConfigurator.upTask.flatMap { it.servicesInfosFile }
}

private static String generateSafeProjectNamePrefix(Project project) {
Expand Down Expand Up @@ -223,7 +229,11 @@ abstract class ComposeSettings {
}

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

void exposeAsEnvironment(ProcessForkOptions task) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,6 @@ class TasksConfigurator {
}
}

@PackageScope
Map<String, ServiceInfo> getServicesInfos() {
upTask.get().servicesInfos
}

@PackageScope
void setupMissingRequiredBy(String taskName, ComposeSettings settings) {
project.tasks
Expand Down