diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt index a91e82e0..3d75614e 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt @@ -16,12 +16,15 @@ var BUILD_SCRIPT_CONFIG : BuildScriptConfig? = null class BuildScriptConfig { /** The list of repos used to locate plug-ins. */ + @Directive fun repos(vararg r: String) = newRepos(*r) /** The list of plug-ins to use for this build file. */ + @Directive fun plugins(vararg pl: String) = newPlugins(*pl) /** The build file classpath. */ + @Directive fun buildFileClasspath(vararg bfc: String) = newBuildFileClasspath(*bfc) // The following settings modify the compiler used to compile the build file. @@ -31,11 +34,6 @@ class BuildScriptConfig { var kobaltCompilerFlags: String? = null } -@Directive -fun buildScript(init: BuildScriptConfig.() -> Unit) { - BUILD_SCRIPT_CONFIG = BuildScriptConfig().apply { init() } -} - @Directive fun homeDir(vararg dirs: String) : String = SystemProperties.homeDir + File.separator + dirs.toMutableList().joinToString(File.separator) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Directives.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Directives.kt index ef96a5f1..f665f5d2 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Directives.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Directives.kt @@ -14,3 +14,9 @@ fun project(vararg projects: Project, init: Project.() -> Unit): Project { } } +@Directive +fun buildScript(init: BuildScriptConfig.() -> Unit): BuildScriptConfig { + val buildScriptConfig = BuildScriptConfig().apply { init() } + BUILD_SCRIPT_CONFIG = buildScriptConfig + return buildScriptConfig +} \ No newline at end of file diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestConfig.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestConfig.kt new file mode 100644 index 00000000..f84b094d --- /dev/null +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestConfig.kt @@ -0,0 +1,40 @@ +package com.beust.kobalt + +import com.beust.kobalt.api.Project +import com.beust.kobalt.api.annotation.Directive + +class TestConfig(val project: Project, val isDefault : Boolean = false) { + val testArgs = arrayListOf() + val jvmArgs = arrayListOf() + val testIncludes = arrayListOf("**/*Test.class") + val testExcludes = arrayListOf() + + @Directive + var name: String = "" + + @Directive + fun args(vararg arg: String) { + testArgs.addAll(arg) + } + + @Directive + fun jvmArgs(vararg arg: String) { + jvmArgs.addAll(arg) + } + + @Directive + fun include(vararg arg: String) { + testIncludes.apply { + clear() + addAll(arg) + } + } + + @Directive + fun exclude(vararg arg: String) { + testExcludes.apply { + clear() + addAll(arg) + } + } +} \ No newline at end of file diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestDirective.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestDirective.kt index d7f6cb7e..ad026380 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestDirective.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/TestDirective.kt @@ -3,43 +3,13 @@ package com.beust.kobalt import com.beust.kobalt.api.Project import com.beust.kobalt.api.annotation.Directive -class TestConfig(val project: Project, val isDefault : Boolean = false) { - val testArgs = arrayListOf() - val jvmArgs = arrayListOf() - val testIncludes = arrayListOf("**/*Test.class") - val testExcludes = arrayListOf() - - var name: String = "" - - fun args(vararg arg: String) { - testArgs.addAll(arg) - } - - fun jvmArgs(vararg arg: String) { - jvmArgs.addAll(arg) - } - - fun include(vararg arg: String) { - testIncludes.apply { - clear() - addAll(arg) - } - } - - fun exclude(vararg arg: String) { - testExcludes.apply { - clear() - addAll(arg) - } - } -} - @Directive -fun Project.test(init: TestConfig.() -> Unit) = let { project -> +fun Project.test(init: TestConfig.() -> Unit): TestConfig = let { project -> with(testConfigs) { val tf = TestConfig(project).apply { init() } if (! map { it.name }.contains(tf.name)) { add(tf) + tf } else { throw KobaltException("Test configuration \"${tf.name}\" already exists, give it a different " + "name with test { name = ... }") diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt index f35b6e26..2dcea900 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt @@ -142,7 +142,7 @@ abstract class GenericTestRunner: ITestRunnerContributor { */ @VisibleForTesting fun calculateAllJvmArgs(project: Project, context: KobaltContext, - testConfig: TestConfig, classpath: List, pluginInfo: IPluginInfo) : List { + testConfig: TestConfig, classpath: List, pluginInfo: IPluginInfo) : List { // Default JVM args val jvmFlags = arrayListOf().apply { addAll(testConfig.jvmArgs) diff --git a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt index 4d89daed..3fa7a738 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt @@ -29,8 +29,8 @@ class ApplicationConfig { } @Directive -fun Project.application(init: ApplicationConfig.() -> Unit) { - ApplicationConfig().let { config -> +fun Project.application(init: ApplicationConfig.() -> Unit): ApplicationConfig { + return ApplicationConfig().also { config -> config.init() (Plugins.findPlugin(ApplicationPlugin.PLUGIN_NAME) as ApplicationPlugin).addConfiguration(this, config) } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/groovy/GroovyPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/groovy/GroovyPlugin.kt index 9f9153b3..13850571 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/groovy/GroovyPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/groovy/GroovyPlugin.kt @@ -44,8 +44,8 @@ class GroovyConfig(val project: Project) { } @Directive -fun Project.groovyCompiler(init: GroovyConfig.() -> Unit) = let { - val config = GroovyConfig(it) - config.init() - (Kobalt.findPlugin(GroovyPlugin.PLUGIN_NAME) as GroovyPlugin).addConfiguration(this, config) -} +fun Project.groovyCompiler(init: GroovyConfig.() -> Unit) = + GroovyConfig(this).also { config -> + config.init() + (Kobalt.findPlugin(GroovyPlugin.PLUGIN_NAME) as GroovyPlugin).addConfiguration(this, config) + } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt index 9eb99f47..e0d233c0 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt @@ -84,8 +84,8 @@ class JavaConfig(val project: Project) { } @Directive -fun Project.javaCompiler(init: JavaConfig.() -> Unit) = let { - val config = JavaConfig(it) - config.init() - (Kobalt.findPlugin(JavaPlugin.PLUGIN_NAME) as JavaPlugin).addConfiguration(this, config) -} +fun Project.javaCompiler(init: JavaConfig.() -> Unit) = + JavaConfig(this).also { config -> + config.init() + (Kobalt.findPlugin(JavaPlugin.PLUGIN_NAME) as JavaPlugin).addConfiguration(this, config) + } \ No newline at end of file diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index 2a350167..8f16a3d4 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -149,15 +149,16 @@ class KotlinConfig(val project: Project) { fun args(vararg options: String) = args.addAll(options) /** The version of the Kotlin compiler */ + @Directive var version: String? = null } @Directive -fun Project.kotlinCompiler(init: KotlinConfig.() -> Unit) = let { - val config = KotlinConfig(it) - config.init() - (Kobalt.findPlugin(KotlinPlugin.PLUGIN_NAME) as KotlinPlugin).addConfiguration(this, config) -} +fun Project.kotlinCompiler(init: KotlinConfig.() -> Unit) = + KotlinConfig(this).also { config -> + config.init() + (Kobalt.findPlugin(KotlinPlugin.PLUGIN_NAME) as KotlinPlugin).addConfiguration(this, config) + } //class SourceLinkMapItem { // var dir: String = "" diff --git a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt index d27bea12..0518fed6 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt @@ -171,7 +171,7 @@ fun Project.install(init: InstallConfig.() -> Unit) { class InstallConfig(var libDir : String = "libs") @Directive -fun Project.assemble(init: PackageConfig.(p: Project) -> Unit) = let { +fun Project.assemble(init: PackageConfig.(p: Project) -> Unit): PackageConfig = let { PackageConfig(this).apply { init(it) } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt index 43318837..9ffea810 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt @@ -206,12 +206,11 @@ data class GithubConfig(val project: Project) { } @Directive -fun Project.github(init: GithubConfig.() -> Unit) { - with(GithubConfig(this)) { - init() - (Kobalt.findPlugin(PublishPlugin.PLUGIN_NAME) as PublishPlugin).addGithubConfiguration(name, this) +fun Project.github(init: GithubConfig.() -> Unit): GithubConfig = + GithubConfig(this).also { config -> + config.init() + (Kobalt.findPlugin(PublishPlugin.PLUGIN_NAME) as PublishPlugin).addGithubConfiguration(name, config) } -} data class BintrayConfig(val project: Project) { /** @@ -245,9 +244,8 @@ data class BintrayConfig(val project: Project) { } @Directive -fun Project.bintray(init: BintrayConfig.() -> Unit) { - with(BintrayConfig(this)) { - init() - (Kobalt.findPlugin(PublishPlugin.PLUGIN_NAME) as PublishPlugin).addBintrayConfiguration(name, this) +fun Project.bintray(init: BintrayConfig.() -> Unit) = + BintrayConfig(this).also { config -> + config.init() + (Kobalt.findPlugin(PublishPlugin.PLUGIN_NAME) as PublishPlugin).addBintrayConfiguration(name, config) } -}