/*
 * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

gradle.taskGraph.whenReady {
    println("Using Kotlin compiler version: $compilerVersion")
    if (build_snapshot_train) {
        configure(subprojects.findAll { it.name == "core" }) {
            configurations.matching { it.name == "kotlinCompilerClasspath" }.all {
                println "Manifest of kotlin-compiler-embeddable.jar for serialization"
                resolvedConfiguration.getFiles().findAll { it.name.contains("kotlin-compiler-embeddable") }.each {
                    def manifest = zipTree(it).matching {
                        include 'META-INF/MANIFEST.MF'
                    }.getFiles().first()

                    manifest.readLines().each {
                        println it
                    }
                }
            }
        }
    }
}
