Improve tooling model + add Gradle version checking (#1602)

* [gradle-plugin] Add tests for IDE model
* [gradle-plugin] Check Gradle version
* [gradle-plugin] Provide language, api and konan version in the model
* [gradle-plugin] Use String instead of KonanTarget in the IDE model
* [gradle-plugin] Rename Produce -> KonanOutput
* [version] Make KonanVersion an interface to allow passing it to IDE
* [gradle-plugin] Replace KonanOutput with CompilerOutputKind
* [gradle-plugin] Don't override usual jar with a fat one
* [gradle-plugin] Fix IDE model tests
* [gradle-plugin] Add library search paths in IDE model
* [gradle-plugin] Use 4.7 as a required version for the plugin
* [gradle-plugin] "Kotlinfy" the version check
This commit is contained in:
ilmat192
2018-05-23 11:58:47 +07:00
committed by GitHub
parent 74e1783e2b
commit bc65c7175d
15 changed files with 441 additions and 118 deletions
+1 -1
View File
@@ -43,7 +43,7 @@ sourceSets {
}
}
compileKotlin{
compileKotlin {
dependsOn('generateCompilerVersion')
}
@@ -42,42 +42,57 @@ open class VersionGenerator: DefaultTask() {
}?: -1
+ """
|package org.jetbrains.kotlin.konan
|data class KonanVersion(val meta: MetaVersion = MetaVersion.DEV,
| val major: Int,
| val minor: Int,
| val maintenance: Int,
| val build:Int) {
| companion object {
| val CURRENT = KonanVersion($meta, $major, $minor, $maintenance, $build)
| }
| fun toString(showMeta: Boolean, showBuild: Boolean) = buildString {
| append(major)
| append('.')
| append(minor)
| if (maintenance != 0) {
| append('.')
| append(maintenance)
| }
| if (showMeta) {
| append('-')
| append(meta.metaString)
| }
| if (showBuild && build != -1) {
| append('-')
| append(build)
| }
| }
|
| private val isRelease: Boolean
| get() = meta == MetaVersion.RELEASE
|
| private val versionString by lazy { toString(!isRelease, !isRelease) }
|
| override fun toString() = versionString
|
| val gradlePluginVersion by lazy { versionString }
|}
|package org.jetbrains.kotlin.konan
|
|import java.io.Serializable
|
|interface KonanVersion : Serializable {
| val meta: MetaVersion
| val major: Int
| val minor: Int
| val maintenance: Int
| val build: Int
|
| fun toString(showMeta: Boolean, showBuild: Boolean): String
|
| companion object {
| val CURRENT = KonanVersionImpl($meta, $major, $minor, $maintenance, $build)
| }
|}
|
|data class KonanVersionImpl(
| override val meta: MetaVersion = MetaVersion.DEV,
| override val major: Int,
| override val minor: Int,
| override val maintenance: Int,
| override val build: Int
|) : KonanVersion {
|
| override fun toString(showMeta: Boolean, showBuild: Boolean) = buildString {
| append(major)
| append('.')
| append(minor)
| if (maintenance != 0) {
| append('.')
| append(maintenance)
| }
| if (showMeta) {
| append('-')
| append(meta.metaString)
| }
| if (showBuild && build != -1) {
| append('-')
| append(build)
| }
| }
|
| private val isRelease: Boolean
| get() = meta == MetaVersion.RELEASE
|
| private val versionString by lazy { toString(!isRelease, !isRelease) }
|
| override fun toString() = versionString
|}
""".trimMargin()
}
versionFile.printWriter().use {
@@ -19,14 +19,14 @@ package org.jetbrains.kotlin.konan
/**
* https://en.wikipedia.org/wiki/Software_versioning
* scheme major.minor[.build[.revision]].
*/
*/
enum class MetaVersion(val metaString:String) {
DEV("dev"),
EAP("eap"),
ALPHA("alpha"),
BETA("beta"),
RC1("rc1"),
RC2("rc2"),
RELEASE("release")
}
enum class MetaVersion(val metaString: String) {
DEV("dev"),
EAP("eap"),
ALPHA("alpha"),
BETA("beta"),
RC1("rc1"),
RC2("rc2"),
RELEASE("release")
}
@@ -40,7 +40,7 @@ enum class Architecture(val bitness: Int) {
WASM32(32);
}
sealed class KonanTarget(override val name: String, val family: Family, val architecture: Architecture) : Named, Serializable {
sealed class KonanTarget(override val name: String, val family: Family, val architecture: Architecture) : Named {
object ANDROID_ARM32 : KonanTarget( "android_arm32", Family.ANDROID, Architecture.ARM32)
object ANDROID_ARM64 : KonanTarget( "android_arm64", Family.ANDROID, Architecture.ARM64)
object IOS_ARM64 : KonanTarget( "ios_arm64", Family.IOS, Architecture.ARM64)