Skip to content

Commit c09f25e

Browse files
committed
fix: Decouple from idofront now that it depends on this library
1 parent ed84925 commit c09f25e

File tree

9 files changed

+35
-50
lines changed

9 files changed

+35
-50
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.gradle
22
build/
33
.idea
4-
.kotlin
4+
.kotlin
5+
kotlin-js-store

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
plugins {
2-
alias(idofrontLibs.plugins.kotlin.multiplatform) apply false
2+
alias(libs.plugins.kotlin.multiplatform) apply false
33
}

core/build.gradle.kts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
plugins {
2-
alias(idofrontLibs.plugins.mia.kotlin.multiplatform)
3-
alias(idofrontLibs.plugins.mia.publication)
2+
id(libs.plugins.kotlin.multiplatform.get().pluginId)
3+
alias(miaConventions.plugins.mia.publication)
44
}
55

66
repositories {
77
mavenCentral()
88
}
99

1010
kotlin {
11+
jvmToolchain(17)
1112
jvm()
1213
js(IR) {
1314
browser()
@@ -24,15 +25,15 @@ kotlin {
2425

2526
sourceSets {
2627
commonMain.dependencies {
27-
implementation(idofrontLibs.kotlinx.serialization.json)
28+
// implementation(idofrontLibs.kotlinx.serialization.json)
2829
implementation(libs.kodein.di)
29-
implementation(idofrontLibs.kermit)
30-
}
31-
commonTest.dependencies {
32-
implementation(kotlin("test"))
33-
}
34-
all {
35-
languageSettings.enableLanguageFeature("ContextParameters")
30+
implementation(libs.kermit)
3631
}
32+
// commonTest.dependencies {
33+
// implementation(kotlin("test"))
34+
// }
35+
// all {
36+
// languageSettings.enableLanguageFeature("ContextParameters")
37+
// }
3738
}
3839
}

core/src/commonMain/kotlin/com/mineinabyss/features/FeatureDSL.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ fun FeatureDI.addCloseables(vararg closeable: AutoCloseable) {
2020
closeable.forEach { instance<FeatureContext>().onClose.add(it) }
2121
}
2222

23-
context(di: DirectDI)
24-
inline fun <reified T : Any> get() = di.instance<T>()
23+
//context(di: DirectDI)
24+
inline fun <reified T : Any> DirectDI.get() = di.instance<T>()
2525

2626
fun feature(name: String, block: FeatureBuilder.() -> Unit): Feature<Unit> {
2727
return FeatureBuilder(name, Unit::class).apply(block).build(extract = { })

core/src/commonMain/kotlin/com/mineinabyss/features/FeatureManager.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.kodein.di.*
1111
class FeatureManager(val rootDI: DI) {
1212
private val loadedFeatures = mutableSetOf<Feature<*>>()
1313
private val dependencies = mutableMapOf<Feature<*>, MutableSet<Feature<*>>>()
14-
private val enabledFeatures = mutableMapOf<Feature<*>, FeatureInstance>()
14+
private val enabledFeatures = mutableMapOf<String, FeatureInstance>()
1515
private val logger = rootDI.direct.instanceOrNull<Logger>() ?: Logger
1616
private val defaultModule = DI.Module("default", allowSilentOverride = true) {
1717
bindSingletonOf(::FeatureContext)
@@ -53,27 +53,27 @@ class FeatureManager(val rootDI: DI) {
5353
}
5454

5555
fun enable(feature: Feature<*>): FeatureInstance {
56-
if (feature in enabledFeatures) return enabledFeatures.getValue(feature)
56+
if (feature.name in enabledFeatures) return enabledFeatures.getValue(feature.name)
5757
load(feature)
5858
// if (!feature.canEnable()) error("Could not enable $feature")
5959
val di = DI {
6060
feature.dependencies.features.forEach {
61-
val enabled = enabledFeatures[it] ?: enable(it)
61+
val enabled = enabledFeatures[it.name] ?: enable(it)
6262
extend(enabled.di, allowOverride = true)
6363
}
6464
extend(rootDI, allowOverride = true)
6565
import(defaultModule, allowOverride = true)
6666
feature.diBuilder(this)
6767
}
6868
val instance = FeatureInstance(di)
69-
enabledFeatures[feature] = instance
69+
enabledFeatures[feature.name] = instance
7070
return instance
7171
}
7272

7373
fun disable(feature: Feature<*>): List<Feature<*>> {
74-
if (feature !in enabledFeatures) return emptyList()
74+
if (feature.name !in enabledFeatures) return emptyList()
7575
val children = dependencies[feature]?.flatMap { disable(it) } ?: emptyList()
76-
enabledFeatures.remove(feature)?.close()
76+
enabledFeatures.remove(feature.name)?.close()
7777
return (children + feature).distinct()
7878
}
7979

@@ -87,15 +87,15 @@ class FeatureManager(val rootDI: DI) {
8787
}
8888

8989
fun disableAll() {
90-
enabledFeatures.keys.toList().forEach { disable(it) }
90+
enabledFeatures.keys.toList().forEach { name -> disable(loadedFeatures.first { it.name == name }) } //TODO cleanup
9191
}
9292

9393
fun reloadAll() {
9494
disableAll()
9595
enableAll()
9696
}
9797

98-
fun getInstance(feature: Feature<*>): FeatureInstance? = enabledFeatures[feature]
98+
fun getInstance(feature: Feature<*>): FeatureInstance? = enabledFeatures[feature.name]
9999

100100
fun <T : Any> getOrNull(feature: Feature<T>): T? =
101101
getInstance(feature)?.di?.direct?.let { feature.extract(it) }

core/src/commonTest/kotlin/com/mineinabyss/features/KodeinTests.kt

Lines changed: 0 additions & 22 deletions
This file was deleted.

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
kotlin.code.style=official
22
idofrontVersion=2.0.0-dev.4
33
group=com.mineinabyss.features
4-
version=0.1
4+
version=0.0.1
5+
conventionsVersion=1.1.0

gradle/libs.versions.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
[versions]
2+
kotlin = "2.3.20"
23
kodein = "7.30.0"
34

45
[libraries]
56
kodein-di = { module = "org.kodein.di:kodein-di", version.ref = "kodein" }
7+
kermit = "co.touchlab:kermit:2.0.5"
8+
9+
[plugins]
10+
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }

settings.gradle.kts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,17 @@ pluginManagement {
99
}
1010
}
1111

12-
dependencyResolutionManagement {
13-
val idofrontVersion: String by settings
12+
val conventionsVersion: String by settings
1413

14+
dependencyResolutionManagement {
1515
repositories {
1616
maven("https://repo.mineinabyss.com/releases")
1717
maven("https://repo.mineinabyss.com/snapshots")
1818
mavenLocal()
1919
}
20-
2120
versionCatalogs {
22-
create("idofrontLibs") {
23-
from("com.mineinabyss:catalog:$idofrontVersion")
21+
create("miaConventions") {
22+
from("com.mineinabyss.conventions:catalog:$conventionsVersion")
2423
}
2524
}
2625
}

0 commit comments

Comments
 (0)