mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
feat(partnerctl-support): add external module manifest models and gateway/module loaders
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package work.slhaf.partner.ctl.support
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
private fun loadModules(): Set<ModuleManifest> {
|
||||
// TODO: 待实现具体加载逻辑
|
||||
return emptySet()
|
||||
}
|
||||
|
||||
fun loadAvailableGateway(): Set<ModuleManifest> {
|
||||
return loadModules().filter { it.withGateway }.toSet()
|
||||
}
|
||||
|
||||
fun loadExternalModule(): Set<ModuleManifest> {
|
||||
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<String>,
|
||||
val artifactDirectory: String,
|
||||
val artifactPattern: String,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Install(
|
||||
val target: String,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Config(
|
||||
val target: String,
|
||||
val fields: List<Field> = 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,
|
||||
}
|
||||
Reference in New Issue
Block a user