Skip to content

Commit 82b5c63

Browse files
committed
重构并优化代码生成模块:
1. 移除 `Extensions.kt`,简化不必要的工具方法。 2. 显著扩展 `JavaTemplates.kt`,引入新的 Java 文件生成工具方法,并优化模板以支持更灵活的样式与功能生成。 3. 优化表单 UI,添加 Beta 标签展示,并改进 Java 样式选择布局。
1 parent 292c212 commit 82b5c63

File tree

18 files changed

+511
-670
lines changed

18 files changed

+511
-670
lines changed

composeApp/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ kotlin {
7272
// implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0-rc03")
7373
// implementation(libs.androidx.lifecycle.runtime)
7474
// implementation(libs.androidx.lifecycle)
75-
implementation(libs.kotlinpoet)
7675
implementation(libs.codegentle.kotlin)
7776
implementation(libs.codegentle.java)
7877
implementation(libs.kotlin.coroutine)

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/codegen/naming/SimbotNames.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ object SimbotNames {
1111
val simbotEventPkg = "love.forte.simbot.event".parseToPackageName()
1212
val simbotSpringPkg = "love.forte.simbot.spring".parseToPackageName()
1313
val simbotQuantcatCommonAnoPkg = "love.forte.simbot.quantcat.common.annotations".parseToPackageName()
14+
val simbotApplicationPkg = "love.forte.simbot.application".parseToPackageName()
1415

1516
val listenerAno = ClassName(simbotQuantcatCommonAnoPkg, "Listener")
1617
val filterAno = ClassName(simbotQuantcatCommonAnoPkg, "Filter")
@@ -19,4 +20,8 @@ object SimbotNames {
1920
val eventClassName = ClassName(simbotEventPkg, "Event")
2021
val msgEventClassName = ClassName(simbotEventPkg, "MessageEvent")
2122
val contactMsgEventClassName = ClassName(simbotEventPkg, "ContactMessageEvent")
23+
24+
// Application classes for Core framework
25+
val application = ClassName(simbotApplicationPkg, "Application")
26+
val applicationBuilder = ClassName(simbotApplicationPkg, "ApplicationBuilder")
2227
}

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/codegen/naming/SpringNames.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ object SpringNames {
3636
private val subPackageAutoconfigureCondition = "autoconfigure.condition".parseToPackageName()
3737
private val springBootAutoconfigureCondition = springBootPkg + subPackageAutoconfigureCondition
3838

39-
val springBootApplicationAno = ClassName(springBootPkg, "SpringBootApplication")
40-
val enableAutoConfigurationAno = ClassName(springBootPkg, "EnableAutoConfiguration")
39+
val enableAutoConfigurationAno = ClassName(springBootAutoconfigureCondition, "EnableAutoConfiguration")
40+
val springBootApplicationAno = ClassName(springBootAutoconfigureCondition, "SpringBootApplication")
4141
val conditionalOnMissingBeanAno = ClassName(springBootAutoconfigureCondition, "ConditionalOnMissingBean")
4242
val conditionalOnBeanAno = ClassName(springBootAutoconfigureCondition, "ConditionalOnBean")
4343
val conditionalOnPropertyAno = ClassName(springBootAutoconfigureCondition, "ConditionalOnProperty")

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/CatalogVersion.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package love.forte.simbot.codegen.gen
22

33
// libs.versions.toml
44
data class GradleCatalogVersionDependency(
5-
val dependencyName: String, // [dependencies]
5+
val dependencyName: String, // use in [dependencies]
66
val group: String,
77
val name: String,
88
val version: GradleCatalogVersion?,
@@ -45,9 +45,9 @@ fun genGradleCatalogVersion(
4545
appendLine("[libraries]")
4646
dependencies.forEach { dependency ->
4747
append(dependency.dependencyName)
48-
// junit = { group = "junit", name = "junit", version.ref = "junit" }
49-
append(" = { group = \"").append(dependency.group)
50-
append("\", name = \"").append(dependency.name)
48+
// junit = { module = "junit:junit", version.ref = "junit" }
49+
append(" = { module = \"")
50+
.append(dependency.group).append(":").append(dependency.name)
5151
append('"')
5252

5353
val dependencyVersion = dependency.version

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/ComponentDependencies.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ val COMPONENT_QQ = GradleCatalogVersionDependency(
5454
name = "simbot-component-qq-guild-core",
5555
version = GradleCatalogVersion(
5656
name = "simbot-qq",
57-
version = "4.0.1"
57+
version = "4.2.2"
5858
)
5959
)
6060

@@ -64,7 +64,7 @@ val COMPONENT_KOOK = GradleCatalogVersionDependency(
6464
name = "simbot-component-kook-core",
6565
version = GradleCatalogVersion(
6666
name = "simbot-kook",
67-
version = "4.0.2"
67+
version = "4.1.5"
6868
)
6969
)
7070

@@ -74,7 +74,7 @@ val COMPONENT_OB_11 = GradleCatalogVersionDependency(
7474
name = "simbot-component-onebot-v11-core",
7575
version = GradleCatalogVersion(
7676
name = "simbot-onebot",
77-
version = "1.4.0"
77+
version = "1.8.2"
7878
)
7979
)
8080

@@ -84,7 +84,7 @@ val SPRING_STARTER = GradleCatalogVersionDependency(
8484
dependencyName = "spring-boot-starter",
8585
group = "org.springframework.boot",
8686
name = "spring-boot-starter",
87-
version = null
87+
version = SPRING_VERSION
8888
)
8989

9090
// Ktor

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/Extensions.kt

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

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/GradleProject.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,17 @@ class GradleProjectViewModel : ViewModel() {
6565
get() = true
6666
set(value) {}
6767

68-
var components: MutableList<SimbotComponentWithVersion> = mutableStateListOf()
68+
val components: MutableList<SimbotComponentWithVersion> = mutableStateListOf()
6969

7070
/**
7171
* 额外依赖
7272
*/
73-
var dependencies: MutableList<GradleCatalogVersionDependency> = mutableStateListOf()
73+
val dependencies: MutableList<GradleCatalogVersionDependency> = mutableStateListOf()
7474

7575
/**
7676
* 插件,默认先带一个 Kotlin
7777
*/
78-
var plugins: MutableList<GradleCatalogPlugin> = mutableStateListOf(PLUGIN_KOTLIN)
78+
val plugins: MutableList<GradleCatalogPlugin> = mutableStateListOf(PLUGIN_KOTLIN)
7979
}
8080

8181
class SimbotComponentWithVersion(

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/Showcases.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,6 @@ import love.forte.simbot.codegen.codegen.naming.SimbotNames
1717
import love.forte.simbot.codegen.codegen.naming.SpringNames
1818
import love.forte.simbot.codegen.gen.SimbotComponent.*
1919

20-
/**
21-
* 生成使用核心库时的示例们到 sourceSets 中。
22-
*/
23-
fun genCoreSourceShowcases(
24-
projectName: String,
25-
projectPackage: String,
26-
sourceSets: JSZip,
27-
resources: JSZip
28-
) {
29-
// Main, 构建App、加载组件
30-
TODO()
31-
32-
}
3320

3421
/**
3522
* 生成使用Spring时的示例们到 sourceSets 中。

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/bridge/ViewModelBridge.kt

Lines changed: 8 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import love.forte.simbot.codegen.gen.core.ProgrammingLanguage
88
import love.forte.simbot.codegen.gen.core.context.ComponentImpl
99
import love.forte.simbot.codegen.gen.core.context.DependencyImpl
1010
import love.forte.simbot.codegen.gen.core.context.createGenerationContext
11+
import love.forte.simbot.codegen.gen.core.context.toDependency
1112
import love.forte.simbot.codegen.gen.core.generators.ProjectGeneratorFactory
1213

1314
/**
@@ -61,53 +62,20 @@ class ViewModelBridge(
6162

6263
// 添加依赖
6364
dependencies.addAll(viewModel.dependencies.map { dependency ->
64-
DependencyImpl(
65-
group = dependency.group,
66-
name = dependency.name,
67-
version = dependency.version?.version ?: "latest",
68-
configurationName = dependency.configName
69-
)
65+
dependency.toDependency()
7066
})
7167

7268
// 添加必要的 simbot 依赖
7369
if (framework is Framework.Spring) {
7470
// Spring 相关依赖
75-
dependencies.add(
76-
DependencyImpl(
77-
group = SPRING_STARTER.group,
78-
name = SPRING_STARTER.name,
79-
version = SPRING_VERSION.version,
80-
configurationName = SPRING_STARTER.configName
81-
)
82-
)
71+
dependencies.add(SPRING_STARTER.toDependency())
8372

84-
dependencies.add(
85-
DependencyImpl(
86-
group = KOTLIN_REFLECT.group,
87-
name = KOTLIN_REFLECT.name,
88-
version = KOTLIN_REFLECT.version?.version ?: "latest",
89-
configurationName = KOTLIN_REFLECT.configName
90-
)
91-
)
73+
dependencies.add(KOTLIN_REFLECT.toDependency())
9274

93-
dependencies.add(
94-
DependencyImpl(
95-
group = SIMBOT_SPRING.group,
96-
name = SIMBOT_SPRING.name,
97-
version = viewModel.simbotVersion ?: SIMBOT_SPRING.version?.version ?: "latest",
98-
configurationName = SIMBOT_SPRING.configName
99-
)
100-
)
75+
dependencies.add(SIMBOT_SPRING.toDependency(viewModel.simbotVersion))
10176
} else {
10277
// 核心库依赖
103-
dependencies.add(
104-
DependencyImpl(
105-
group = SIMBOT_CORE.group,
106-
name = SIMBOT_CORE.name,
107-
version = viewModel.simbotVersion ?: SIMBOT_CORE.version?.version ?: "latest",
108-
configurationName = SIMBOT_CORE.configName
109-
)
110-
)
78+
dependencies.add(SIMBOT_CORE.toDependency(viewModel.simbotVersion))
11179
}
11280

11381
// 添加组件依赖
@@ -119,25 +87,13 @@ class ViewModelBridge(
11987
}
12088

12189
dependencies.add(
122-
DependencyImpl(
123-
group = componentDependency.group,
124-
name = componentDependency.name,
125-
version = (componentVersion as? ComponentVersion.Value)?.value ?: componentDependency.version?.version ?: "latest",
126-
configurationName = componentDependency.configName
127-
)
90+
componentDependency.toDependency((componentVersion as? ComponentVersion.Value)?.value)
12891
)
12992
}
13093

13194
// 如果有组件需要 Ktor,添加 Ktor 依赖
13295
if (viewModel.components.any { it.component.ktorRequired }) {
133-
dependencies.add(
134-
DependencyImpl(
135-
group = KTOR_CLIENT_JAVA.group,
136-
name = KTOR_CLIENT_JAVA.name,
137-
version = KTOR_CLIENT_JAVA.version?.version ?: "latest",
138-
configurationName = "runtimeOnly"
139-
)
140-
)
96+
dependencies.add(KTOR_CLIENT_JAVA.toDependency())
14197
}
14298
}
14399

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/gen/core/CodeGenerator.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package love.forte.simbot.codegen.gen.core
22

33
import jszip.JSZip
4+
import love.forte.simbot.codegen.gen.GradleCatalogVersionDependency
45

56
/**
67
* 代码生成器的核心接口。
@@ -193,4 +194,6 @@ interface Dependency {
193194
* 依赖的配置名称,例如 implementation、api 等
194195
*/
195196
val configurationName: String
197+
198+
val catalog: GradleCatalogVersionDependency?
196199
}

0 commit comments

Comments
 (0)