37 lines
884 B
Go
37 lines
884 B
Go
package migrations
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type pluginTOMLStruct map[string]map[string][]interface{}
|
|
|
|
func CreateTOMLStruct(category, name string) pluginTOMLStruct {
|
|
return map[string]map[string][]interface{}{
|
|
category: {
|
|
name: make([]interface{}, 0),
|
|
},
|
|
}
|
|
}
|
|
|
|
func (p *pluginTOMLStruct) Add(category, name string, plugin interface{}) {
|
|
cfg := map[string]map[string][]interface{}(*p)
|
|
cfg[category][name] = append(cfg[category][name], plugin)
|
|
}
|
|
|
|
func AsStringSlice(raw interface{}) ([]string, error) {
|
|
rawList, ok := raw.([]interface{})
|
|
if !ok {
|
|
return nil, fmt.Errorf("unexpected type : %T", raw)
|
|
}
|
|
|
|
converted := make([]string, 0, len(rawList))
|
|
for _, rawElement := range rawList {
|
|
el, ok := rawElement.(string)
|
|
if !ok {
|
|
return nil, fmt.Errorf("unexpected type for list element: %T", rawElement)
|
|
}
|
|
converted = append(converted, el)
|
|
}
|
|
return converted, nil
|
|
}
|