apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'application'


task gradle_of_filth(dependsOn: [test]) {
    doFirst {
    }
    doLast {
    }
    onlyIf {
        tasks.test.didWork
    }
}


task main

main << {
    //execution block
    println "first step"
}

main.doLast {
    println "second step"
}

main.doFirst {
    println "before first step"
}

main.onlyIf {
    true == true
}

main {
    //configuration block always run
    println "counter intuitively the real first step"
    doFirst {
        println "doFirst nested in config"
    }
    doLast {
        println "doLast nested in config"
    }
}

task somethingelse << {
    println "something else"
}

task something(dependsOn: [main, somethingelse]) << {
    //#gradle -q something
    println "will first call main then call this"
}

main.doLast {
    //System.setProperty()
    console.readLine('> Please enter your username: ')
    def tmp = console.readPassword('> Please enter your password: ')
    sleep(10000)
    println tmp
}
