Files
Ratte/conf/plugin.go
2025-05-07 17:22:29 +09:00

55 lines
1.1 KiB
Go

package conf
import (
"fmt"
"github.com/goccy/go-json"
)
type CorePlugin struct {
DataPath string `json:"DataPath,omitempty"`
Config json.RawMessage `json:"Config,omitempty"`
Plugin
}
type _core CorePlugin
func (c *CorePlugin) UnmarshalJSON(data []byte) error {
err := json.Unmarshal(data, (*_core)(c))
if err != nil {
return fmt.Errorf("failed to unmarshal core: %v", err)
}
if len(c.Config) == 0 {
c.Config = data
}
err = json.Unmarshal(c.Config, &c.Plugin)
if err != nil {
return fmt.Errorf("failed to unmarshal core config: %v", err)
}
return nil
}
type Plugins struct {
Core []CorePlugin `json:"core"`
Panel []Plugin `json:"panel"`
}
type Plugin struct {
Name string `json:"Name,omitempty"`
Path string `json:"Path,omitempty"`
}
type _plugins Plugins
func (p *Plugins) UnmarshalJSON(data []byte) error {
var path string
err := json.Unmarshal(data, path)
if err != nil {
return err
}
err = json.Unmarshal(data, (*_plugins)(p))
if err != nil {
return fmt.Errorf("failed to unmarshal plugin: %v", err)
}
return nil
}