task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }

    dependencies {
        classpath 'com.bmuschko:gradle-docker-plugin:2.6.1'
    }
}

repositories {
    mavenCentral()
}

apply plugin: 'com.bmuschko.docker-remote-api'

import com.bmuschko.gradle.docker.tasks.image.Dockerfile
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage

task copySchedulerJars(type:Copy){
    dependsOn(":myriad-scheduler:build")
    def subdir = new File(project.buildDir, "libs")
    if( !subdir.exists() ) { subdir.mkdirs() }
    from '../myriad-scheduler/build/libs'
    into 'libs'
}

task copyExecutorJars(type:Copy){
    dependsOn(":myriad-executor:build")
    def subdir = new File(project.buildDir, "libs")
    if( !subdir.exists() ) { subdir.mkdirs() }
    from '../myriad-executor/build/libs'
    into 'libs'
}


task copyMyriadJars(dependsOn: ":myriad-scheduler:build") {
    dependsOn(copySchedulerJars)
    dependsOn(copyExecutorJars)
}

task buildRMDocker(type: DockerBuildImage) {
    dependsOn(copyMyriadJars)
    if (System.env.DOCKER_HOST) {
        url = "$System.env.DOCKER_HOST".replace("tcp","https")
        if (System.env.DOCKER_CERT_PATH) {
            certPath = new File(System.env.DOCKER_CERT_PATH)
        }
    }
    else {
        url = 'unix:///var/run/docker.sock'
    }  
    inputDir = file('.')
    if(!project.hasProperty('dockerTag')) {
        tag = 'mesos/myriad'
    } else {
        tag = dockerTag
    }
}
