Skip to content

Commit f58f417

Browse files
committed
Tech : Upgrade versions
Kotlin : 2.0 and JVM22 KSP : upgrade & use new kotlin compiler Gradle : 8.8, JVM22, delete buildSrc
1 parent 578e591 commit f58f417

File tree

28 files changed

+138
-118
lines changed

28 files changed

+138
-118
lines changed

annotation-generator/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
22

33
plugins {
4-
id("fr.delphes.kotlin-conventions")
54
alias(libs.plugins.ksp)
65
id(libs.plugins.kotlin.jvm.get().pluginId)
76
id(libs.plugins.kotlin.serialization.get().pluginId)
@@ -22,8 +21,9 @@ sourceSets.main {
2221
}
2322

2423
tasks.withType<KotlinCompile>() {
25-
kotlinOptions {
26-
freeCompilerArgs += "-Xopt-in=com.google.devtools.ksp.KspExperimental"
24+
compilerOptions {
25+
freeCompilerArgs.add("-Xopt-in=com.google.devtools.ksp.KspExperimental")
26+
2727
}
2828
}
2929

annotation-generator/src/main/kotlin/fr/delphes/annotation/serialization/PolymorphicSerializerModuleProcessor.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.google.devtools.ksp.processing.SymbolProcessorProvider
99
import com.google.devtools.ksp.symbol.KSAnnotated
1010
import com.google.devtools.ksp.symbol.KSClassDeclaration
1111
import com.google.devtools.ksp.symbol.KSFile
12+
import com.google.devtools.ksp.symbol.KSName
1213
import com.squareup.kotlinpoet.ClassName
1314
import com.squareup.kotlinpoet.CodeBlock
1415
import com.squareup.kotlinpoet.FileSpec
@@ -58,15 +59,18 @@ class PolymorphicSerializerModuleProcessor(
5859
private val modules: List<RegisterPolymorphic>,
5960
private val moduleName: String,
6061
) : SymbolProcessor {
61-
private val childrenByModule = mutableMapOf<RegisterPolymorphic, MutableSet<KSClassDeclaration>>()
62+
private lateinit var lastResolver: Resolver
63+
private val childrenNamesByModule = mutableMapOf<RegisterPolymorphic, MutableSet<KSName>>()
6264

6365
override fun process(resolver: Resolver): List<KSAnnotated> {
66+
lastResolver = resolver
6467
logger.info("Start processing : PolymorphicSerializerModuleProcessor")
6568
modules.forEach { module ->
6669
resolver.getSymbolsWithAnnotation(module.annotationClass.java.name)
6770
.filterIsInstance<KSClassDeclaration>()
71+
.map { it.qualifiedName!! }
6872
.forEach { declaration ->
69-
childrenByModule
73+
childrenNamesByModule
7074
.getOrPut(module) { mutableSetOf() }
7175
.add(declaration)
7276
}
@@ -78,6 +82,10 @@ class PolymorphicSerializerModuleProcessor(
7882
override fun finish() {
7983
super.finish()
8084

85+
val childrenByModule = childrenNamesByModule.mapValues { (_, children) ->
86+
children.map { lastResolver.getClassDeclarationByName(it)!! }
87+
}
88+
8189
FileSpec
8290
.builder(
8391
GenerationUtils.baseGeneratedPackage(moduleName),
@@ -103,14 +111,15 @@ class PolymorphicSerializerModuleProcessor(
103111
.build()
104112
)
105113
.build()
106-
.writeTo(codeGenerator, true, getSources())
114+
.writeTo(codeGenerator, true, childrenByModule.getSources())
107115
}
108116

109-
private fun getSources() = childrenByModule.values.flatten().map { it.containingFile as KSFile }
117+
private fun Map<RegisterPolymorphic, List<KSClassDeclaration>>.getSources() =
118+
values.flatten().map { it.containingFile as KSFile }
110119

111120
private fun CodeBlock.Builder.toModuleCode(
112121
module: RegisterPolymorphic,
113-
children: MutableSet<KSClassDeclaration>,
122+
children: List<KSClassDeclaration>,
114123
) {
115124
addStatement("%T(%T::class) {", POLYMORPHIC, module.parentClassName)
116125
children.forEach {

annotation-generator/src/main/kotlin/fr/delphes/generation/dynamicForm/FieldMetadataExt.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import com.google.devtools.ksp.getAnnotationsByType
55
import com.google.devtools.ksp.symbol.KSClassDeclaration
66
import com.google.devtools.ksp.symbol.KSPropertyDeclaration
77
import com.google.devtools.ksp.symbol.KSType
8+
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
9+
import com.squareup.kotlinpoet.asClassName
810
import com.squareup.kotlinpoet.asTypeName
911
import fr.delphes.annotation.dynamicForm.DynamicFormParent
1012
import fr.delphes.annotation.dynamicForm.FieldDescription
@@ -17,7 +19,6 @@ import fr.delphes.generation.utils.getAllAnnotations
1719
import fr.delphes.generation.utils.getAnnotationValue
1820
import fr.delphes.utils.serialization.DurationSerializer
1921
import java.time.Duration
20-
import kotlin.reflect.typeOf
2122

2223
fun KSPropertyDeclaration.getFieldMeta(): FieldMetadata {
2324
val name = simpleName.asString()
@@ -49,7 +50,7 @@ fun KSPropertyDeclaration.getFieldMeta(): FieldMetadata {
4950
null,
5051
"emptyMap()",
5152
MapFieldDescriptor::class,
52-
typeOf<Map<String, String>>().asTypeName()
53+
Map::class.asClassName().parameterizedBy(String::class.asTypeName(), String::class.asTypeName())
5354
)
5455

5556
"kotlin.collections.List" -> {

annotation-generator/src/main/kotlin/fr/delphes/generation/dynamicForm/generateRegistryProcessor/GenerateRegistryProcessorProvider.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
99
import com.google.devtools.ksp.processing.SymbolProcessorProvider
1010
import com.google.devtools.ksp.symbol.KSAnnotated
1111
import com.google.devtools.ksp.symbol.KSClassDeclaration
12-
import com.google.devtools.ksp.symbol.KSFile
12+
import com.google.devtools.ksp.symbol.KSName
1313
import com.squareup.kotlinpoet.CodeBlock
1414
import com.squareup.kotlinpoet.FileSpec
1515
import com.squareup.kotlinpoet.KModifier
@@ -24,6 +24,7 @@ import fr.delphes.dynamicForm.DynamicFormType
2424
import fr.delphes.generation.dynamicForm.generateFormProcessor.GenerateDynamicFormProcessor
2525
import fr.delphes.generation.utils.GenerationUtils
2626
import fr.delphes.generation.utils.getAllAnnotations
27+
import fr.delphes.generation.utils.getSources
2728

2829
class GenerateRegistryProcessorProvider : SymbolProcessorProvider {
2930
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
@@ -39,21 +40,26 @@ class GenerateRegistryProcessorProvider : SymbolProcessorProvider {
3940
private val logger: KSPLogger,
4041
private val moduleName: String,
4142
) : SymbolProcessor {
42-
private val allForms = mutableSetOf<KSClassDeclaration>()
43+
private lateinit var lastResolver: Resolver
44+
private val allFormNames = mutableSetOf<KSName>()
4345

4446
override fun process(resolver: Resolver): List<KSAnnotated> {
47+
lastResolver = resolver
4548
logger.info("Start processing : Generate Dynamic Forms Registry")
46-
allForms.addAll(
49+
allFormNames.addAll(
4750
resolver.getSymbolsWithAnnotation(DynamicForm::class.java.name)
4851
.filterIsInstance<KSClassDeclaration>()
52+
.map { it.qualifiedName!! }
4953
)
5054

5155
return emptyList()
5256
}
5357

5458
override fun finish() {
5559
super.finish()
56-
60+
val allForms = allFormNames.map { formClassName ->
61+
lastResolver.getClassDeclarationByName(formClassName)!!
62+
}
5763
FileSpec
5864
.builder(
5965
"${GenerationUtils.baseGeneratedPackage(moduleName)}.dynamicForm",
@@ -95,9 +101,7 @@ class GenerateRegistryProcessorProvider : SymbolProcessorProvider {
95101
.build()
96102
)
97103
.build()
98-
.writeTo(codeGenerator, false, getSources())
104+
.writeTo(codeGenerator, false, allForms.getSources())
99105
}
100-
101-
private fun getSources() = allForms.map { it.containingFile as KSFile }
102106
}
103107
}

annotation-generator/src/main/kotlin/fr/delphes/generation/outgoingEvent/generateRegistryProcessor/GenerateRegistryProcessor.kt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
99
import com.google.devtools.ksp.processing.SymbolProcessorProvider
1010
import com.google.devtools.ksp.symbol.KSAnnotated
1111
import com.google.devtools.ksp.symbol.KSClassDeclaration
12-
import com.google.devtools.ksp.symbol.KSFile
12+
import com.google.devtools.ksp.symbol.KSName
1313
import com.squareup.kotlinpoet.CodeBlock
1414
import com.squareup.kotlinpoet.FileSpec
1515
import com.squareup.kotlinpoet.KModifier
@@ -22,6 +22,7 @@ import fr.delphes.feature.OutgoingEventType
2222
import fr.delphes.generation.outgoingEvent.generateBuilderProcessor.GenerateOutgoingEventBuilderModuleProcessor
2323
import fr.delphes.generation.utils.GenerationUtils.baseGeneratedPackage
2424
import fr.delphes.generation.utils.GenerationUtils.getModuleName
25+
import fr.delphes.generation.utils.getSources
2526

2627
class GenerateOutgoingEventRegistryProcessorProvider : SymbolProcessorProvider {
2728
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
@@ -38,13 +39,16 @@ class GenerateOutgoingEventRegistryProcessor(
3839
private val logger: KSPLogger,
3940
private val moduleName: String,
4041
) : SymbolProcessor {
41-
private val allOutgoingEvents = mutableSetOf<KSClassDeclaration>()
42+
private lateinit var lastResolver: Resolver
43+
private val allOutgoingEventsName = mutableSetOf<KSName>()
4244

4345
override fun process(resolver: Resolver): List<KSAnnotated> {
46+
lastResolver = resolver
4447
logger.info("Start processing : Generate Outgoing Event Registry")
45-
allOutgoingEvents.addAll(
48+
allOutgoingEventsName.addAll(
4649
resolver.getSymbolsWithAnnotation(RegisterOutgoingEvent::class.java.name)
4750
.filterIsInstance<KSClassDeclaration>()
51+
.map { it.qualifiedName!! }
4852
)
4953

5054
return emptyList()
@@ -53,6 +57,10 @@ class GenerateOutgoingEventRegistryProcessor(
5357
override fun finish() {
5458
super.finish()
5559

60+
val allOutgoingEvents = allOutgoingEventsName.map { eventClassName ->
61+
lastResolver.getClassDeclarationByName(eventClassName)!!
62+
}
63+
5664
FileSpec
5765
.builder(
5866
"${baseGeneratedPackage(moduleName)}.outgoingEvent",
@@ -69,10 +77,13 @@ class GenerateOutgoingEventRegistryProcessor(
6977
.addStatement("OutgoingEventRegistry(")
7078
.addStatement("listOf(")
7179
.apply {
72-
allOutgoingEvents.forEach { event ->
73-
val serialName = event.getSerialName()
80+
allOutgoingEvents.forEach { eventClass ->
81+
val serialName = eventClass.getSerialName()
7482
val builderClassName =
75-
GenerateOutgoingEventBuilderModuleProcessor.builderClassName(moduleName, event)
83+
GenerateOutgoingEventBuilderModuleProcessor.builderClassName(
84+
moduleName,
85+
eventClass
86+
)
7687

7788
addStatement(
7889
"%T(",
@@ -94,10 +105,8 @@ class GenerateOutgoingEventRegistryProcessor(
94105
.build()
95106
)
96107
.build()
97-
.writeTo(codeGenerator, false, getSources())
108+
.writeTo(codeGenerator, false, allOutgoingEvents.getSources())
98109
}
99-
100-
private fun getSources() = allOutgoingEvents.map { it.containingFile as KSFile }
101110
}
102111

103112
private fun KSClassDeclaration.getSerialName() =

annotation-generator/src/main/kotlin/fr/delphes/generation/utils/KSPExtension.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.google.devtools.ksp.getAnnotationsByType
55
import com.google.devtools.ksp.processing.Dependencies
66
import com.google.devtools.ksp.symbol.KSAnnotation
77
import com.google.devtools.ksp.symbol.KSClassDeclaration
8+
import com.google.devtools.ksp.symbol.KSFile
89
import com.google.devtools.ksp.symbol.KSPropertyDeclaration
910
import com.google.devtools.ksp.symbol.KSTypeReference
1011
import kotlin.reflect.KClass
@@ -41,4 +42,6 @@ fun <T : Annotation> KSClassDeclaration.getAllAnnotations(annotationType: KClass
4142
}
4243

4344
fun KSClassDeclaration.toNonAggregatingDependencies() =
44-
Dependencies(false, containingFile!!)
45+
Dependencies(false, containingFile!!)
46+
47+
fun List<KSClassDeclaration>.getSources() = map { it.containingFile as KSFile }

annotation/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
}

bot-core/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
alias(libs.plugins.ksp)

bot-features/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
alias(libs.plugins.ksp)

bot-overlay/build.gradle.kts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
alias(libs.plugins.ksp)
@@ -8,13 +7,17 @@ plugins {
87

98
dependencies {
109
implementation(libs.bundles.kotlin.common)
10+
implementation(project(":utils"))
1111
implementation(project(":bot-core"))
1212
api(libs.ktor.server.core)
1313
implementation(libs.bundles.ktor.server)
14+
implementation(project(":annotation"))
1415
implementation(project(":annotation-generator"))
1516
ksp(project(":annotation-generator"))
1617
}
1718

1819
ksp {
1920
arg("module-name", "overlay")
20-
}
21+
}
22+
23+
description = "bot-overlay"

build.gradle.kts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
12
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
23

34
plugins {
45
alias(libs.plugins.kotlin.jvm) apply false
56
alias(libs.plugins.kotlin.serialization) apply false
67
}
78

9+
group = "fr.delphes"
10+
version = "1.0-SNAPSHOT"
11+
812
subprojects {
913
tasks.withType<KotlinCompile>().configureEach {
10-
kotlinOptions.freeCompilerArgs += "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi"
14+
compilerOptions {
15+
freeCompilerArgs.add("-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi")
16+
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
17+
jvmTarget.set(JvmTarget.JVM_22)
18+
}
19+
}
20+
tasks.withType<JavaCompile>().configureEach {
21+
sourceCompatibility = JavaVersion.VERSION_22.toString()
22+
targetCompatibility = JavaVersion.VERSION_22.toString()
1123
}
1224
}

buildSrc/build.gradle.kts

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

buildSrc/src/main/kotlin/fr.delphes.kotlin-conventions.gradle.kts

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

connector-discord/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
alias(libs.plugins.ksp)

connector-obs/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
alias(libs.plugins.ksp)

connector-twitch/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
plugins {
2-
id("fr.delphes.kotlin-conventions")
32
id(libs.plugins.kotlin.jvm.get().pluginId)
43
id(libs.plugins.kotlin.serialization.get().pluginId)
54
alias(libs.plugins.ksp)

gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ksp.useKSP2=true
2+
org.gradle.jvmargs=-Xmx4096M -XX:MaxMetaspaceSize=1024m

gradle/wrapper/gradle-wrapper.jar

-16.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)