mirror of
https://github.com/langgenius/dify-plugin-daemon.git
synced 2026-07-22 09:45:27 -04:00
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package bundle_entities
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/langgenius/dify-plugin-daemon/pkg/entities/manifest_entities"
|
|
"github.com/langgenius/dify-plugin-daemon/pkg/entities/plugin_entities"
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type Bundle struct {
|
|
Name string `json:"name" yaml:"name" validate:"required"`
|
|
Labels plugin_entities.I18nObject `json:"labels" yaml:"labels" validate:"required"`
|
|
Description plugin_entities.I18nObject `json:"description" yaml:"description" validate:"required"`
|
|
Icon string `json:"icon" yaml:"icon" validate:"required"`
|
|
Version manifest_entities.Version `json:"version" yaml:"version" validate:"required,version"`
|
|
Author string `json:"author" yaml:"author" validate:"required"`
|
|
Type manifest_entities.DifyManifestType `json:"type" yaml:"type" validate:"required,eq=bundle"`
|
|
Dependencies []Dependency `json:"dependencies" yaml:"dependencies" validate:"required"`
|
|
Tags []manifest_entities.PluginTag `json:"tags" yaml:"tags" validate:"omitempty,dive,plugin_tag,max=128"`
|
|
}
|
|
|
|
// for api, avoid pydantic validation error
|
|
func (b *Bundle) MarshalJSON() ([]byte, error) {
|
|
type alias Bundle
|
|
p := alias(*b)
|
|
|
|
if p.Tags == nil {
|
|
p.Tags = []manifest_entities.PluginTag{}
|
|
}
|
|
|
|
return json.Marshal(p)
|
|
}
|
|
|
|
// for unmarshal yaml
|
|
func (b *Bundle) UnmarshalYAML(node *yaml.Node) error {
|
|
// avoid nil tags
|
|
type alias Bundle
|
|
|
|
p := &struct {
|
|
*alias `yaml:",inline"`
|
|
}{
|
|
alias: (*alias)(b),
|
|
}
|
|
|
|
if err := node.Decode(p); err != nil {
|
|
return err
|
|
}
|
|
|
|
if p.Tags == nil {
|
|
p.Tags = []manifest_entities.PluginTag{}
|
|
}
|
|
|
|
return nil
|
|
}
|