plugins {
    // id 'org.shipkit.bintray' version '2.3.5'
    id "nebula.lint" version "18.1.0"
}


description = "Gradle root project"
allprojects {
    apply plugin: "java"
    apply plugin: "nebula.lint"
    gradleLint {
        rules = [
               // 'unused-dependency',
               // 'dependency-parentheses',
               // 'undeclared-dependency',
               // 'minimum-dependency-version'
        ]
        reportFormat = 'text'
        reportOnlyFixableViolations = true
    }
    group = "com.baeldung"
    version = "0.0.1"
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"

    repositories {
        mavenCentral()
    }
}

subprojects {
    version = '1.0'
}

apply plugin: 'eclipse'

println 'This will be executed during the configuration phase.'

task configured {
    println 'This will also be executed during the configuration phase.'
}

task execFirstTest {
    doLast {
        println 'This will be executed during the execution phase.'
    }
}

task execSecondTest {
    doFirst {
      println 'This will be executed first during the execution phase.'
    }
    doLast {
      println 'This will be executed last during the execution phase.'
    }
    println 'This will be executed during the configuration phase as well.'
}

task welcome {
    doLast {
        println 'Welcome on the Baeldung!'
    }
}

task welcomeWithGroup {
    group 'Sample category'
    doLast {
        println 'Welcome on the Baeldung!'
    }
}

task welcomeWithGroupAndDescription {
    group 'Sample category'
    description 'Tasks which shows welcome message'
    doLast {
        println 'Welcome on the Baeldung!'
    }
}

class PrintToolVersionTask extends DefaultTask {
    String tool

    @TaskAction
    void printToolVersion() {
        switch (tool) {
            case 'java':
                println System.getProperty("java.version")
                break
            case 'groovy':
                println GroovySystem.version
                break
            default:
                throw new IllegalArgumentException("Unknown tool")
        }
    }
}

task printJavaVersion(type : PrintToolVersionTask) {
    tool 'java'
}

task printGroovyVersion(type : PrintToolVersionTask) {
    tool 'groovy'
}

import com.baeldung.PrintToolVersionBuildSrcTask

task printJavaVersionBuildSrc(type : PrintToolVersionBuildSrcTask) {
    tool 'java'
}

task printGroovyVersionBuildSrc(type : PrintToolVersionBuildSrcTask) {
    tool 'groovy'
}
