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:
+1
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user