Skip to content

Commit 03acc4a

Browse files
committed
Provide version in compiler artifact
1 parent 469500d commit 03acc4a

File tree

7 files changed

+51
-5
lines changed

7 files changed

+51
-5
lines changed

jupyter-lib/kotlin-jupyter-compiler/build.gradle.kts

+19
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,25 @@ tasks {
6060
}
6161
}
6262

63+
val buildProperties by tasks.registering {
64+
inputs.property("version", version)
65+
66+
val outputDir = file(project.buildDir.toPath().resolve("resources").resolve("main"))
67+
outputs.dir(outputDir)
68+
69+
doLast {
70+
outputDir.mkdirs()
71+
val properties = inputs.properties.entries.map { it.toPair() }.toMutableList()
72+
val propertiesFile = outputDir.resolve("compiler.properties")
73+
propertiesFile.writeText(properties.joinToString("") { "${it.first}=${it.second}\n" })
74+
75+
}
76+
}
77+
78+
tasks.processResources {
79+
dependsOn(buildProperties)
80+
}
81+
6382
addPublication {
6483
publicationName = "compiler"
6584
artifactId = "compiler"

jupyter-lib/kotlin-jupyter-compiler/src/main/kotlin/org/jetbrains/kotlin/jupyter/compiler/jupyterCompiler.kt

+8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.jetbrains.kotlin.jupyter.compiler
22

33
import kotlinx.coroutines.runBlocking
4+
import org.jetbrains.kotlin.jupyter.api.KotlinKernelVersion
45
import org.jetbrains.kotlin.jupyter.compiler.util.ReplCompilerException
56
import org.jetbrains.kotlin.jupyter.compiler.util.SourceCodeImpl
67
import org.jetbrains.kotlin.jupyter.compiler.util.actualClassLoader
8+
import org.jetbrains.kotlin.jupyter.config.readResourceAsIniFile
79
import org.jetbrains.kotlin.scripting.compiler.plugin.impl.KJvmReplCompilerBase
810
import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase
911
import org.jetbrains.kotlin.scripting.ide_services.compiler.KJvmReplCompilerWithIdeServices
@@ -31,6 +33,12 @@ class JupyterCompiler<CompilerT : ReplCompiler<KJvmCompiledScript>>(
3133
) : ReplCompiler<KJvmCompiledScript> by compiler {
3234
private val executionCounter = AtomicInteger()
3335
private val classes = mutableListOf<KClass<*>>()
36+
private val properties = readResourceAsIniFile("compiler.properties")
37+
38+
val version: KotlinKernelVersion =
39+
KotlinKernelVersion.from(
40+
properties["version"] ?: error("Compiler artifact should contain version")
41+
)!!
3442

3543
val numberOfSnippets: Int
3644
get() = classes.size
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.jetbrains.kotlin.jupyter.config
2+
3+
fun String.parseIniConfig() =
4+
lineSequence().map { it.split('=') }.filter { it.count() == 2 }.map { it[0] to it[1] }.toMap()
5+
6+
fun readResourceAsIniFile(fileName: String) =
7+
ClassLoader.getSystemResource(fileName)?.readText()?.parseIniConfig().orEmpty()

src/main/kotlin/org/jetbrains/kotlin/jupyter/config.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import kotlinx.serialization.serializer
1515
import org.jetbrains.kotlin.jupyter.api.KotlinKernelVersion
1616
import org.jetbrains.kotlin.jupyter.config.defaultRepositories
1717
import org.jetbrains.kotlin.jupyter.config.getLogger
18+
import org.jetbrains.kotlin.jupyter.config.readResourceAsIniFile
1819
import org.jetbrains.kotlin.jupyter.dependencies.ResolverConfig
1920
import org.jetbrains.kotlin.jupyter.libraries.LibraryFactory
2021
import org.zeromq.SocketType
@@ -25,7 +26,7 @@ const val protocolVersion = "5.3"
2526
internal val log by lazy { getLogger() }
2627

2728
val defaultRuntimeProperties by lazy {
28-
RuntimeKernelProperties(ClassLoader.getSystemResource("runtime.properties")?.readText()?.parseIniConfig().orEmpty())
29+
RuntimeKernelProperties(readResourceAsIniFile("runtime.properties"))
2930
}
3031

3132
enum class JupyterSockets(val zmqKernelType: SocketType, val zmqClientType: SocketType) {

src/main/kotlin/org/jetbrains/kotlin/jupyter/util.kt

-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ import kotlin.script.experimental.api.SourceCode
66
import kotlin.script.experimental.jvm.util.determineSep
77
import kotlin.script.experimental.jvm.util.toSourceCodePosition
88

9-
fun String.parseIniConfig() =
10-
lineSequence().map { it.split('=') }.filter { it.count() == 2 }.map { it[0] to it[1] }.toMap()
11-
129
fun List<String>.joinToLines() = joinToString("\n")
1310

1411
fun generateDiagnostic(fromLine: Int, fromCol: Int, toLine: Int, toCol: Int, message: String, severity: String) =

src/test/kotlin/org/jetbrains/kotlin/jupyter/test/ApiTest.kt

+14
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@ package org.jetbrains.kotlin.jupyter.test
22

33
import org.jetbrains.kotlin.jupyter.EvalResult
44
import org.jetbrains.kotlin.jupyter.ReplForJupyterImpl
5+
import org.jetbrains.kotlin.jupyter.compiler.getSimpleCompiler
56
import org.junit.jupiter.api.Test
7+
import kotlin.script.experimental.api.ScriptCompilationConfiguration
8+
import kotlin.script.experimental.api.ScriptEvaluationConfiguration
69
import kotlin.test.assertEquals
10+
import kotlin.test.assertTrue
711

812
class ApiTest : AbstractReplTest() {
913
private val repl = ReplForJupyterImpl(libraryFactory, classpath)
@@ -41,4 +45,14 @@ class ApiTest : AbstractReplTest() {
4145
val res = repl.eval("x")
4246
assertEquals(42, res.resultValue)
4347
}
48+
49+
@Test
50+
fun compilerVersion() {
51+
val jCompiler = getSimpleCompiler(
52+
ScriptCompilationConfiguration(),
53+
ScriptEvaluationConfiguration()
54+
)
55+
val version = jCompiler.version
56+
assertTrue(version.major >= 0)
57+
}
4458
}

src/test/kotlin/org/jetbrains/kotlin/jupyter/test/ConfigTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package org.jetbrains.kotlin.jupyter.test
22

33
import jupyter.kotlin.JavaRuntime
44
import org.jetbrains.kotlin.jupyter.api.KotlinKernelVersion
5+
import org.jetbrains.kotlin.jupyter.config.parseIniConfig
56
import org.jetbrains.kotlin.jupyter.defaultRuntimeProperties
67
import org.jetbrains.kotlin.jupyter.libraries.LibrariesDir
78
import org.jetbrains.kotlin.jupyter.libraries.LibraryPropertiesFile
89
import org.jetbrains.kotlin.jupyter.log
9-
import org.jetbrains.kotlin.jupyter.parseIniConfig
1010
import org.junit.jupiter.api.Assertions.assertEquals
1111
import org.junit.jupiter.api.Assertions.assertNull
1212
import org.junit.jupiter.api.Assertions.assertTrue

0 commit comments

Comments
 (0)