From 4200df652506ddb791508a02464ccbff9480b56c Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Mon, 4 May 2026 15:20:34 +0800 Subject: [PATCH] feat(partnerctl-support): add external module manifest models and gateway/module loaders --- .../partner/ctl/support/external_module.kt | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 PartnerCtl/src/main/java/work/slhaf/partner/ctl/support/external_module.kt diff --git a/PartnerCtl/src/main/java/work/slhaf/partner/ctl/support/external_module.kt b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/support/external_module.kt new file mode 100644 index 00000000..f50e75fd --- /dev/null +++ b/PartnerCtl/src/main/java/work/slhaf/partner/ctl/support/external_module.kt @@ -0,0 +1,65 @@ +package work.slhaf.partner.ctl.support + +import kotlinx.serialization.Serializable + +private fun loadModules(): Set { + // TODO: 待实现具体加载逻辑 + return emptySet() +} + +fun loadAvailableGateway(): Set { + return loadModules().filter { it.withGateway }.toSet() +} + +fun loadExternalModule(): Set { + return loadModules().filter { !it.withGateway }.toSet() +} + +@Serializable +data class ModuleManifest( + val id: String, + val name: String, + val withGateway: Boolean, + val description: String = "", + val source: Source, + val install: Install, + val config: Config? = null, +) + +@Serializable +data class Source( + val url: String, + val sourceDirName: String, + val buildCommand: List, + val artifactDirectory: String, + val artifactPattern: String, +) + +@Serializable +data class Install( + val target: String, +) + +@Serializable +data class Config( + val target: String, + val fields: List = emptyList(), +) + +@Serializable +data class Field( + val name: String, + val label: String, + val type: FieldType, + val default: String? = null, + val required: Boolean = true, +) + +@Serializable +enum class FieldType { + STRING, + INT, + NUMBER, + BOOLEAN, + RAW_JSON, +} \ No newline at end of file