working CLI tool, versioning support, etc

This commit is contained in:
sergeych committed 2025-06-03 16:32:36 +04:00
1 parent 7b76b7d80f
commit 953e0e696b
17 files changed
+234 -46

No files matched your search

+43 -5
View File
@@ -11,7 +11,7 @@ plugins {
}
group = "net.sergeych"
version = "0.0.1-SNAPSHOT"
version = "0.0.5-SNAPSHOT"
kotlin {
jvm()
@@ -26,7 +26,7 @@ kotlin {
// iosArm64()
// iosSimulatorArm64()
linuxX64()
js(IR) {
js {
browser()
nodejs()
}
@@ -44,12 +44,13 @@ kotlin {
}
val commonMain by getting {
kotlin.srcDir("$buildDir/generated/buildConfig/commonMain/kotlin")
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1")
//put your multiplatform dependencies here
implementation(libs.kotlinx.coroutines.core)
implementation(libs.mp.bintools)
implementation("net.sergeych:mp_stools:1.5.2")
api(libs.kotlinx.coroutines.core)
api(libs.mp.bintools)
api("net.sergeych:mp_stools:1.5.2")
}
}
val commonTest by getting {
@@ -109,3 +110,40 @@ mavenPublishing {
}
}
}
val projectVersion by project.extra(provider {
// Compute value lazily
(version as String)
})
val generateBuildConfig by tasks.registering {
// Declare outputs safely
val outputDir = layout.buildDirectory.dir("generated/buildConfig/commonMain/kotlin")
outputs.dir(outputDir)
val version = projectVersion.get()
// Inputs: Version is tracked as an input
inputs.property("version", version)
doLast {
val packageName = "net.sergeych.lyng.buildconfig"
val packagePath = packageName.replace('.', '/')
val buildConfigFile = outputDir.get().file("$packagePath/BuildConfig.kt").asFile
buildConfigFile.parentFile?.mkdirs()
buildConfigFile.writeText(
"""
|package $packageName
|
|object BuildConfig {
| const val VERSION = "$version"
|}
""".trimMargin()
)
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
dependsOn(generateBuildConfig)
}
@@ -21,7 +21,6 @@ class Script(
companion object {
val defaultContext: Context = Context().apply {
addFn("println") {
print("yn: ")
for ((i, a) in args.withIndex()) {
if (i > 0) print(' ' + a.asStr.value)
else print(a.asStr.value)
@@ -5,6 +5,7 @@ package net.sergeych.lyng
open class ScriptError(val pos: Pos, val errorMessage: String,cause: Throwable?=null) : Exception(
"""
$pos: Error: $errorMessage
${pos.currentLine}
${"-".repeat(pos.column)}^
""".trimIndent(),
@@ -0,0 +1,5 @@
package net.sergeych.lyng
import net.sergeych.lyng.buildconfig.BuildConfig
val LyngVersion = BuildConfig.VERSION
@@ -6,6 +6,12 @@ import kotlin.test.*
class ScriptTest {
@Test
fun testVersion() {
println("--------------------------------------------")
println("version = ${LyngVersion}")
}
@Test
fun parseNewlines() {
fun check(expected: String, type: Token.Type, row: Int, col: Int, src: String, offset: Int = 0) {