mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
docs(partnerctl-support): add KDoc for source build spec and external module manifest models
This commit is contained in:
@@ -15,12 +15,27 @@ fun loadExternalModule(): Set<ModuleManifest> {
|
||||
return loadModules().filter { !it.withGateway }.toSet()
|
||||
}
|
||||
|
||||
/**
|
||||
* External module manifest loaded from the module registry.
|
||||
*
|
||||
* This type models the JSON contract of a registry entry. Paths are stored as strings here because
|
||||
* manifests are external JSON documents. Runtime code should convert path-like fields to [java.nio.file.Path]
|
||||
* only when building execution specs.
|
||||
*/
|
||||
@Serializable
|
||||
data class ModuleManifest(
|
||||
/** Stable module id. Also used as gateway channel name for gateway modules. */
|
||||
val id: String,
|
||||
|
||||
/** Human-readable module name. */
|
||||
val name: String,
|
||||
|
||||
/** Whether this module can provide a gateway channel. */
|
||||
val withGateway: Boolean,
|
||||
|
||||
/** Human-readable module description shown before installation. */
|
||||
val description: String = "",
|
||||
|
||||
val source: Source,
|
||||
val install: Install,
|
||||
val config: Config? = null,
|
||||
@@ -28,21 +43,34 @@ data class ModuleManifest(
|
||||
|
||||
@Serializable
|
||||
data class Source(
|
||||
/** Git repository URL used as the module source. */
|
||||
val url: String,
|
||||
|
||||
/** Directory name for the cloned repository under the temporary build directory. */
|
||||
val sourceDirName: String,
|
||||
|
||||
/** Build command executed with the cloned source root as working directory. */
|
||||
val buildCommand: List<String>,
|
||||
|
||||
/** Directory containing build artifacts, relative to the cloned source root. */
|
||||
val artifactDirectory: String,
|
||||
|
||||
/** Glob pattern used inside [artifactDirectory] to select the artifact to install. */
|
||||
val artifactPattern: String,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Install(
|
||||
/** Install target path, relative to Partner home. */
|
||||
val target: String,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Config(
|
||||
/** Config file target path, relative to Partner home. */
|
||||
val target: String,
|
||||
|
||||
/** Interactive fields used to generate the module config object. */
|
||||
val fields: List<Field> = emptyList(),
|
||||
)
|
||||
|
||||
|
||||
@@ -5,13 +5,34 @@ import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.StandardCopyOption
|
||||
|
||||
/**
|
||||
* Runtime specification for building a JVM/Maven project from source and installing one built artifact.
|
||||
*
|
||||
* Path semantics:
|
||||
* - [sourceDirName] is the child directory name created under a temporary build directory.
|
||||
* - [artifactDirectory] is resolved relative to the cloned source root: tempDir/sourceDirName/artifactDirectory.
|
||||
* - [installRelativePath] is resolved relative to Partner home: home/installRelativePath.
|
||||
*/
|
||||
data class SourceBuildInstallSpec(
|
||||
/** Display name used in prompt messages. */
|
||||
val displayName: String,
|
||||
|
||||
/** Git repository URL used by `git clone --depth 1`. */
|
||||
val repoUrl: String,
|
||||
|
||||
/** Directory name for the cloned repository under the temporary build directory. */
|
||||
val sourceDirName: String,
|
||||
|
||||
/** Build command executed with the cloned source root as working directory. */
|
||||
val buildCommand: List<String>,
|
||||
|
||||
/** Directory containing build artifacts, relative to the cloned source root. */
|
||||
val artifactDirectory: Path,
|
||||
|
||||
/** Selects the artifact to install from the resolved artifact directory. */
|
||||
val artifactSelector: (Path) -> Path?,
|
||||
|
||||
/** Install target path, relative to Partner home. */
|
||||
val installRelativePath: Path,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user