@@ -6,6 +6,7 @@ import com.avast.gradle.dockercompose.DockerExecutor
66import com.avast.gradle.dockercompose.ServiceHost
77import com.avast.gradle.dockercompose.ServiceInfo
88import com.avast.gradle.dockercompose.ServiceInfoCache
9+ import groovy.json.JsonSlurper
910import org.gradle.api.DefaultTask
1011import org.gradle.api.file.DirectoryProperty
1112import org.gradle.api.file.RegularFileProperty
@@ -14,7 +15,6 @@ import org.gradle.api.provider.MapProperty
1415import org.gradle.api.provider.Property
1516import org.gradle.api.tasks.Internal
1617import org.gradle.api.tasks.TaskAction
17- import org.yaml.snakeyaml.Yaml
1818
1919import java.time.Duration
2020import java.time.Instant
@@ -212,13 +212,19 @@ abstract class ComposeUp extends DefaultTask {
212212 @Internal
213213 protected def getStateForCache () {
214214 String processesAsString = composeExecutor. get(). execute(' ps' , ' --format' , ' json' )
215- // Status field contains something like "Up 8 seconds", so we have to strip the duration.
216- Object [] processes = new Yaml (). load(processesAsString)
217- List<Object > transformed = processes. collect {
218- if (it.Status . startsWith(' Up ' )) it.Status = ' Up'
219- it
215+ String processesState = processesAsString
216+ try {
217+ // Status field contains something like "Up 8 seconds", so we have to strip the duration.
218+ Object [] processes = new JsonSlurper (). parseText(processesAsString)
219+ List<Object > transformed = processes. collect {
220+ if (it.Status . startsWith(' Up ' )) it.Status = ' Up'
221+ it
222+ }
223+ processesState = transformed. join(' \t ' )
224+ } catch (Exception e) {
225+ logger. warn(" Cannot process JSON returned from 'docker compose ps --format json'" , e)
220226 }
221- transformed . join( ' \t ' ) + composeExecutor. get(). execute(' config' ) + startedServices. get(). join(' ,' )
227+ processesState + composeExecutor. get(). execute(' config' ) + startedServices. get(). join(' ,' )
222228 }
223229
224230 protected Iterable<ServiceInfo > loadServicesInfo (Iterable<String > servicesNames ) {
0 commit comments