// Top-level build file where you can add configuration options common to all sub-projects/modules.

apply plugin: 'org.jetbrains.kotlin.native.cocoapods'
//apply plugin: 'kotlinx-serialization'

buildscript {
    ext.kotlin_version = '1.3.60'
    repositories {
        google()
        jcenter()
        mavenCentral()
        gradlePluginPortal()
        maven { url "http://dl.bintray.com/kotlin/kotlin-eap" }
        maven { url "https://kotlin.bintray.com/kotlinx" }
        maven { url "https://plugins.gradle.org/m2/" }

    }
    dependencies {
        classpath 'org.reflections:reflections:0.9.11'
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"

        //  classpath "com.android.tools.build:gradle:$gradlePluginVersion"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }


}

/*Add Compile options in following block*/


allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url "http://dl.bintray.com/kotlin/kotlin-eap" }
        maven { url "https://kotlin.bintray.com/kotlinx" }
        maven { url "https://plugins.gradle.org/m2/" }

    }

    project.tasks.whenTaskAdded { task ->
        println("task added: " + task.name)
    }

    afterEvaluate {
        println "evaluated project: $project"
    }

    gradle.taskGraph.afterTask { task ->
        println("task $task.name inputs:")
        //  task.inputs.files.each {println "   " + it}
    }

    gradle.taskGraph.afterTask { task ->
        println("task $task.name outputs:")
        // task.outputs.files.each {println "   " + it}
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

task doReflectyStuff {
    // dependsOn compileJava
    doLast {
        URL[] urls = sourceSets.main.runtimeClasspath.files.collect {
            it.toURI().toURL()
            println(it)
        }
        ClassLoader classLoader = new URLClassLoader(urls, null)
        org.reflections.Configuration config = org.reflections.util.ConfigurationBuilder
                .build("package.name.of.interest.here")
                .addClassLoader(classLoader)
                .setUrls(urls)
        org.reflections.Reflections reflections = new org.reflections.Reflections(config)

    }
}
