Skip to content

Commit 3aa34e9

Browse files
committed
Extract mokkery-core-plugin
1 parent c953a24 commit 3aa34e9

46 files changed

Lines changed: 276 additions & 222 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
plugins {
2+
kotlin("jvm")
3+
// no publishing - it's embedded into the plugin
4+
}
5+
6+
kotlin.compilerOptions.freeCompilerArgs.add("-Xcontext-parameters")
7+
8+
kotlin.sourceSets.all {
9+
languageSettings.apply {
10+
optIn("org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi")
11+
optIn("org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI")
12+
optIn("dev.mokkery.annotations.InternalMokkeryApi")
13+
}
14+
}
15+
16+
dependencies {
17+
compileOnly(libs.kotlin.compiler)
18+
compileOnly(libs.kotlin.stdlib)
19+
compileOnly(project(":mokkery-core"))
20+
compileOnly(project(":mokkery-core-tooling"))
21+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dev.mokkery.plugin.core
2+
3+
import dev.mokkery.internal.options.MokkeryOptionsContainer
4+
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
5+
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
6+
import org.jetbrains.kotlin.config.CompilerConfiguration
7+
8+
abstract class BaseMokkeryCommandLineProcessor(
9+
override val pluginId: String,
10+
private val mokkeryOptions: MokkeryOptionsContainer,
11+
) : CommandLineProcessor {
12+
13+
override val pluginOptions: Collection<AbstractCliOption> = mokkeryOptions.map { it.cliOption }
14+
15+
override fun processOption(
16+
option: AbstractCliOption,
17+
value: String,
18+
configuration: CompilerConfiguration
19+
) {
20+
val option = mokkeryOptions[option.optionName] ?: error("Unknown $pluginId CLI option: ${option.optionName}")
21+
val key = option.configurationKey
22+
try {
23+
val deserialized = option.type
24+
.serializer
25+
.deserialize(value)
26+
configuration.add(key, deserialized)
27+
} catch (e: Throwable) {
28+
throw IllegalStateException(
29+
"Could not deserialize value for $pluginId CLI option ${option.name} = <$value> Expected: ${option.type.description}",
30+
e
31+
)
32+
}
33+
}
34+
}
35+

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/Cache.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/Cache.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.mokkery.plugin
1+
package dev.mokkery.plugin.core
22

33
import dev.mokkery.context.MokkeryContext
44
import dev.mokkery.context.require
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package dev.mokkery.plugin.core
2+
3+
import dev.mokkery.internal.options.MokkeryOption
4+
import org.jetbrains.kotlin.config.CompilerConfiguration
5+
6+
fun <T> CompilerConfiguration.getSingleOrDefault(option: MokkeryOption<T>): T {
7+
return get(option.configurationKey)
8+
?.singleOrNull()
9+
?: option.defaultValue
10+
?: error("No value for ${option.configurationKey}")
11+
}

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/MokkeryOption.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/MokkeryOption.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.mokkery.plugin
1+
package dev.mokkery.plugin.core
22

33
import dev.mokkery.internal.options.MokkeryOption
44
import dev.mokkery.internal.options.MokkeryOptionProjection

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/MokkeryPluginScope.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/MokkeryPluginScope.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.mokkery.plugin
1+
package dev.mokkery.plugin.core
22

33
import dev.mokkery.context.MokkeryContext
44

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/context/ValueContext.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/context/ValueContext.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
@file:Suppress("NOTHING_TO_INLINE")
22

3-
package dev.mokkery.plugin.context
3+
package dev.mokkery.plugin.core.context
44

55
import dev.mokkery.context.MokkeryContext
66
import dev.mokkery.context.require
7-
import dev.mokkery.plugin.MokkeryPluginScope
7+
import dev.mokkery.plugin.core.MokkeryPluginScope
88
import kotlin.reflect.KClass
99

1010
inline fun <T : Any> T.asMokkeryContext(key: ValueContext.Key<T>): MokkeryContext = ValueContext(

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/context/Values.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/context/Values.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package dev.mokkery.plugin.context
1+
package dev.mokkery.plugin.core.context
22

33
import dev.mokkery.context.MokkeryContext
4-
import dev.mokkery.plugin.MokkeryPluginScope
4+
import dev.mokkery.plugin.core.MokkeryPluginScope
55
import org.jetbrains.kotlin.config.CompilerConfiguration
66

77
context(scope: MokkeryPluginScope)

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/ir/Caches.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/ir/Caches.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package dev.mokkery.plugin.ir
1+
package dev.mokkery.plugin.core.ir
22

3-
import dev.mokkery.plugin.cacheKey
3+
import dev.mokkery.plugin.core.cacheKey
44
import org.jetbrains.kotlin.ir.declarations.IrClass
55
import org.jetbrains.kotlin.ir.declarations.IrProperty
66
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction

mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/ir/IrMokkeryPluginScope.kt renamed to mokkery-core-plugin/src/main/kotlin/dev/mokkery/plugin/core/ir/IrMokkeryPluginScope.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package dev.mokkery.plugin.ir
1+
package dev.mokkery.plugin.core.ir
22

33
import dev.mokkery.context.MokkeryContext
4-
import dev.mokkery.plugin.MokkeryPluginScope
5-
import dev.mokkery.plugin.context.asMokkeryContext
6-
import dev.mokkery.plugin.context.configuration
7-
import dev.mokkery.plugin.context.createValueKey
8-
import dev.mokkery.plugin.context.readValue
4+
import dev.mokkery.plugin.core.MokkeryPluginScope
5+
import dev.mokkery.plugin.core.context.asMokkeryContext
6+
import dev.mokkery.plugin.core.context.configuration
7+
import dev.mokkery.plugin.core.context.createValueKey
8+
import dev.mokkery.plugin.core.context.readValue
99
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
1010
import org.jetbrains.kotlin.config.messageCollector
1111
import org.jetbrains.kotlin.ir.IrBuiltIns

0 commit comments

Comments
 (0)