Documentation
¶
Overview ¶
Package pluginkit 只登记插件类型:kind 与构造函数。
init() 里应只调用 Register,不读取配置、不构造实例。 按 kind 查看配置字段和依赖扩展点见 Describe;PluginDescription.Template 可导出可填写配置骨架。 配置识别见 github.com/lengzhao/pluginkit/config, 启动期实例化见 github.com/lengzhao/pluginkit/build。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CompatibleKinds ¶
CompatibleKinds 返回构造返回值静态上可满足 want 的插件 kind。 精确匹配扩展点类型的 kind 排在前面,其次是具体类型实现,最后是接口返回的宽松匹配。
func FormatType ¶
FormatType 把 reflect.Type 格式化为可读字符串,供 UI 展示。
Types ¶
type Defaulter ¶ added in v0.1.3
type Defaulter interface {
SetDefaults()
}
Defaulter 是插件 Config 类型可选实现的接口。 build 在 decode 之后、Validate 之前调用 SetDefaults 填充默认值。 SetDefaults 不返回 error,不接收 ctx,不访问外部系统。
约定:零值视为未配置。需要区分「显式零值」和「未填」时, 插件应使用指针字段(如 *int)。
注意:bool 字段不要用 SetDefaults 设 true 默认值——用户显式关闭 (false)与未填同为零值,会被默认值覆盖,导致无法关闭。需要默认 开启的开关请使用 *bool,nil 表示未填。
SetDefaults / Validate 必须是纯函数:不访问外部系统、不 panic, panic 会沿调用栈传播(Build / ValidatePlan / Describe 均不 recover)。
type FieldDescription ¶
type FieldDescription struct {
Name string
GoName string
Type reflect.Type
List bool
Optional bool
}
FieldDescription 描述 struct 顶层字段的配置名、Go 名、类型和单值/多值/可选规则。
type KindCandidate ¶
KindCandidate 是空槽可插入的插件候选。
func KindCandidates ¶
func KindCandidates(want reflect.Type) []KindCandidate
KindCandidates 返回可满足 want 的插件候选,含返回类型与是否精确匹配。
type PluginDescription ¶
type PluginDescription struct {
Kind string
Config []FieldDescription
Extensions []FieldDescription
ReturnType reflect.Type
// contains filtered or unexported fields
}
PluginDescription 描述已注册插件类型的配置字段和依赖扩展点字段。
func Describe ¶
func Describe(kind string) (PluginDescription, bool)
Describe 按 kind 返回已注册插件类型的元信息。 未注册时返回 false,不报错。
func (PluginDescription) ConfigDefaults ¶ added in v0.1.3
func (d PluginDescription) ConfigDefaults() map[string]any
ConfigDefaults 返回 SetDefaults 后的默认配置,key 为 json 字段名。 Config 未实现 Defaulter 时返回 nil。供 manager 等工具标注字段默认值,不构造实例。
func (PluginDescription) Template ¶
func (d PluginDescription) Template() map[string]any
Template 返回可填入配置的骨架,格式与 build 接受的 PluginUse 一致。 init() 注册后即可调用,不构造实例。Config 实现 Defaulter 时 config 字段填 SetDefaults 后的真实默认值,否则为零值占位;deps 使用 use: "" 占位; 可选 deps 会省略。
Directories
¶
| Path | Synopsis |
|---|---|
|
Package build 在启动期按配置构造插件实例图。
|
Package build 在启动期按配置构造插件实例图。 |
|
Package config 识别 plugins 配置树,得到 PluginUse。
|
Package config 识别 plugins 配置树,得到 PluginUse。 |
|
examples
|
|
|
agent
command
|
|
|
commands
command
|
|
|
manager
command
|
|
|
workflow
command
|
|
|
Package manager 提供 pluginkit 插件配置的工作台 Web UI 与 HTTP API。
|
Package manager 提供 pluginkit 插件配置的工作台 Web UI 与 HTTP API。 |