Skip to content

Commit ad559b6

Browse files
Allow disable koin exported definitions (KOIN_EXPORT_DEFINITIONS arg) if we want to only filter definitions assembled in modules only
1 parent 86c1c2a commit ad559b6

File tree

6 files changed

+32
-17
lines changed

6 files changed

+32
-17
lines changed

projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/BuilderProcessor.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,17 @@ class BuilderProcessor(
7474
moduleList
7575
)
7676

77-
//TODO Build Proxy
77+
val doExportDefinitions = doExportDefinitions()
78+
if (!doExportDefinitions && defaultModule.definitions.isNotEmpty()){
79+
logger.warn("Skip definitions export ...")
80+
defaultModule.definitions.clear()
81+
}
82+
7883
val monitoredDefinitions = (moduleList+defaultModule).flatMap { it.definitions }.filter { it.isMonitored }.filterIsInstance<KoinMetaData.Definition.ClassDefinition>()
7984
koinCodeGenerator.generateProxies(monitoredDefinitions)
8085

8186
logger.logging("Generate code ...")
82-
// TODO Attach proxy if monitored
83-
koinCodeGenerator.generateModules(moduleList, defaultModule, isDefaultModuleActive())
87+
koinCodeGenerator.generateModules(moduleList, defaultModule, isDefaultModuleActive(), doExportDefinitions)
8488
koinCodeGenerator.generateApplications(applications)
8589

8690
val isConfigCheckActive = isConfigCheckActive()
@@ -148,7 +152,6 @@ class BuilderProcessor(
148152
return option
149153
}
150154

151-
//TODO Disable by default in 2.2?
152155
private fun isDefaultModuleActive(): Boolean {
153156
return options.getOrDefault(KOIN_DEFAULT_MODULE.name, "false") == true.toString()
154157
}
@@ -160,6 +163,10 @@ class BuilderProcessor(
160163
private fun getCustomGenerationPackage(): String? {
161164
return options.getOrDefault(KOIN_GENERATION_PACKAGE.name, null)
162165
}
166+
167+
private fun doExportDefinitions(): Boolean {
168+
return options.getOrDefault(KOIN_EXPORT_DEFINITIONS.name, "true") == true.toString()
169+
}
163170
}
164171

165172
class BuilderProcessorProvider : SymbolProcessorProvider {

projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/KspOptions.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@ enum class KspOptions {
2929
KOIN_LOG_TIMES,
3030
KOIN_DEFAULT_MODULE,
3131
KOIN_GENERATION_PACKAGE,
32-
KOIN_USE_COMPOSE_VIEWMODEL
32+
KOIN_USE_COMPOSE_VIEWMODEL,
33+
KOIN_EXPORT_DEFINITIONS
3334
}

projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/ClassModuleWriter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.koin.compiler.generator
1717

1818
import com.google.devtools.ksp.processing.CodeGenerator
19-
import com.google.devtools.ksp.processing.Resolver
2019
import org.koin.compiler.metadata.KoinMetaData
2120
import org.koin.compiler.metadata.tag.TagResolver
2221

projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/DefaultModuleWriter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
package org.koin.compiler.generator
1717

1818
import com.google.devtools.ksp.processing.CodeGenerator
19-
import com.google.devtools.ksp.processing.Resolver
2019
import org.koin.compiler.metadata.KoinMetaData
2120
import org.koin.compiler.metadata.tag.KoinTagWriter
2221
import org.koin.compiler.metadata.tag.TagResolver
2322

2423
class DefaultModuleWriter(
2524
codeGenerator: CodeGenerator,
26-
tagResolver : TagResolver,
25+
tagResolver: TagResolver,
2726
defaultModule: KoinMetaData.Module,
28-
generateDefaultModule: Boolean
29-
) : ModuleWriter(codeGenerator, defaultModule, tagResolver) {
27+
generateDefaultModule: Boolean,
28+
doExportDefinitions: Boolean
29+
) : ModuleWriter(codeGenerator, defaultModule, tagResolver, doExportDefinitions) {
3030

3131
val hashContent = defaultModule.definitions.map { it.label }.sorted().joinToString()
3232
override val fileName : String = "KoinDefault-${KoinTagWriter.hashContent(hashContent)}"

projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/KoinCodeGenerator.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import com.google.devtools.ksp.processing.KSPLogger
2020
import org.koin.compiler.metadata.KoinMetaData
2121
import org.koin.compiler.metadata.camelCase
2222
import org.koin.compiler.metadata.tag.TagResolver
23-
import kotlin.concurrent.thread
2423

2524
class KoinCodeGenerator(
2625
val codeGenerator: CodeGenerator,
@@ -36,7 +35,8 @@ class KoinCodeGenerator(
3635
fun generateModules(
3736
moduleList: List<KoinMetaData.Module>,
3837
defaultModule: KoinMetaData.Module,
39-
generateDefaultModule : Boolean
38+
generateDefaultModule: Boolean,
39+
doExportDefinitions: Boolean
4040
) {
4141
logger.info("generate ${moduleList.size} modules ...")
4242

@@ -58,13 +58,14 @@ class KoinCodeGenerator(
5858
}
5959

6060
if (defaultModule.definitions.isNotEmpty()) {
61-
generateDefaultFile(defaultModule, generateDefaultModule)
61+
generateDefaultFile(defaultModule, generateDefaultModule, doExportDefinitions)
6262
}
6363
}
6464

6565
private fun generateDefaultFile(
6666
defaultModule: KoinMetaData.Module,
67-
generateDefaultModule: Boolean
67+
generateDefaultModule: Boolean,
68+
doExportDefinitions: Boolean
6869
) {
6970
logger.info("generate default file ...")
7071

@@ -76,7 +77,7 @@ class KoinCodeGenerator(
7677
LOGGER.warn("Generating 'defaultModule' with ${defaultModule.definitions.size} definitions")
7778
}
7879
defaultModule.setCurrentDefinitionsToExternals()
79-
DefaultModuleWriter(codeGenerator, tagResolver, defaultModule, generateDefaultModule).writeModule(isViewModelMPActive)
80+
DefaultModuleWriter(codeGenerator, tagResolver, defaultModule, generateDefaultModule, doExportDefinitions).writeModule(isViewModelMPActive)
8081
}
8182
}
8283

projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/ModuleWriter.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.koin.compiler.generator
1717

1818
import com.google.devtools.ksp.processing.CodeGenerator
19-
import com.google.devtools.ksp.processing.Resolver
2019
import org.koin.compiler.generator.DefinitionWriter.Companion.CREATED_AT_START
2120
import org.koin.compiler.generator.DefinitionWriter.Companion.TAB
2221
import org.koin.compiler.generator.KoinCodeGenerator.Companion.LOGGER
@@ -31,7 +30,8 @@ import org.koin.compiler.type.clearPackageSymbols
3130
abstract class ModuleWriter(
3231
codeGenerator: CodeGenerator,
3332
val module: KoinMetaData.Module,
34-
val tagResolver : TagResolver
33+
val tagResolver: TagResolver,
34+
val doExportDefinitions: Boolean = true
3535
) : AbstractFileWriter(codeGenerator) {
3636

3737
open val hasExternalDefinitions: Boolean = false
@@ -53,8 +53,15 @@ abstract class ModuleWriter(
5353
}
5454

5555
if (hasExternalDefinitions) {
56+
if (!doExportDefinitions){
57+
writeln("// Definitions export skipped")
58+
writeln("/*")
59+
}
5660
writeExternalDefinitionImports()
5761
writeExternalDefinitions()
62+
if (!doExportDefinitions){
63+
writeln("*/")
64+
}
5865
}
5966

6067
writeEmptyLine()

0 commit comments

Comments
 (0)