<lambda>null1*e6ba1607SAndroid Build Coastguard Workerimport java.io.File 2*e6ba1607SAndroid Build Coastguard Worker import java.util.Properties 3*e6ba1607SAndroid Build Coastguard Worker import org.gradle.api.DefaultTask 4*e6ba1607SAndroid Build Coastguard Worker import org.gradle.api.tasks.OutputFile 5*e6ba1607SAndroid Build Coastguard Worker import org.gradle.api.tasks.TaskAction 6*e6ba1607SAndroid Build Coastguard Worker 7*e6ba1607SAndroid Build Coastguard Worker abstract class ProvideBuildClasspathTask : DefaultTask() { 8*e6ba1607SAndroid Build Coastguard Worker @get:OutputFile abstract var outFile: File 9*e6ba1607SAndroid Build Coastguard Worker 10*e6ba1607SAndroid Build Coastguard Worker @TaskAction 11*e6ba1607SAndroid Build Coastguard Worker @Throws(Exception::class) 12*e6ba1607SAndroid Build Coastguard Worker fun writeProperties() { 13*e6ba1607SAndroid Build Coastguard Worker val props = Properties() 14*e6ba1607SAndroid Build Coastguard Worker val usePreinstrumentedJars = System.getProperty(PREINSTRUMENTED_KEY, "true").toBoolean() 15*e6ba1607SAndroid Build Coastguard Worker 16*e6ba1607SAndroid Build Coastguard Worker AndroidSdk.ALL_SDKS.forEach { androidSdk -> 17*e6ba1607SAndroid Build Coastguard Worker val configurationName = "sdk${androidSdk.apiLevel}" 18*e6ba1607SAndroid Build Coastguard Worker val coordinates = 19*e6ba1607SAndroid Build Coastguard Worker if (usePreinstrumentedJars) { 20*e6ba1607SAndroid Build Coastguard Worker androidSdk.preinstrumentedCoordinates 21*e6ba1607SAndroid Build Coastguard Worker } else { 22*e6ba1607SAndroid Build Coastguard Worker androidSdk.coordinates 23*e6ba1607SAndroid Build Coastguard Worker } 24*e6ba1607SAndroid Build Coastguard Worker val config = 25*e6ba1607SAndroid Build Coastguard Worker project.configurations.create(configurationName) { 26*e6ba1607SAndroid Build Coastguard Worker dependencies.add(project.dependencies.create(coordinates)) 27*e6ba1607SAndroid Build Coastguard Worker } 28*e6ba1607SAndroid Build Coastguard Worker 29*e6ba1607SAndroid Build Coastguard Worker props.setProperty(coordinates, config.files.joinToString(File.pathSeparator)) 30*e6ba1607SAndroid Build Coastguard Worker } 31*e6ba1607SAndroid Build Coastguard Worker 32*e6ba1607SAndroid Build Coastguard Worker val outDir = outFile.parentFile 33*e6ba1607SAndroid Build Coastguard Worker if (!outDir.isDirectory) { 34*e6ba1607SAndroid Build Coastguard Worker outDir.mkdirs() 35*e6ba1607SAndroid Build Coastguard Worker } 36*e6ba1607SAndroid Build Coastguard Worker 37*e6ba1607SAndroid Build Coastguard Worker outFile.printWriter().use { out -> props.store(out, "# GENERATED by $this -- do not edit") } 38*e6ba1607SAndroid Build Coastguard Worker } 39*e6ba1607SAndroid Build Coastguard Worker 40*e6ba1607SAndroid Build Coastguard Worker private companion object { 41*e6ba1607SAndroid Build Coastguard Worker private const val PREINSTRUMENTED_KEY = "robolectric.usePreinstrumentedJars" 42*e6ba1607SAndroid Build Coastguard Worker } 43*e6ba1607SAndroid Build Coastguard Worker } 44