2022-11-02 01:56:57 +01:00
|
|
|
package schema
|
|
|
|
|
2022-11-02 16:31:12 +01:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
"gopkg.in/yaml.v3"
|
|
|
|
)
|
|
|
|
|
2022-11-02 01:56:57 +01:00
|
|
|
type CharSchema struct {
|
|
|
|
Registry string `json:"registry" yaml:"registry"`
|
|
|
|
Plugins CharSchemaPlugins `json:"plugins" yaml:"plugins"`
|
|
|
|
}
|
2022-11-02 16:31:12 +01:00
|
|
|
|
|
|
|
func ParseFile(ctx context.Context, path string) (*CharSchema, error) {
|
|
|
|
if _, err := os.Stat(path); errors.Is(err, os.ErrNotExist) {
|
|
|
|
return nil, fmt.Errorf("could not parse file, as it is not found or permitted: %s", path)
|
|
|
|
}
|
|
|
|
|
|
|
|
file, err := os.ReadFile(path)
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("could not read file: %w", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
var schema CharSchema
|
|
|
|
if err = yaml.Unmarshal(file, &schema); err != nil {
|
|
|
|
return nil, fmt.Errorf("could not deserialize yaml file into CharSchema: %w", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return &schema, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (cs *CharSchema) GetPlugins(ctx context.Context) (*PluginOps, error) {
|
|
|
|
return nil, nil
|
|
|
|
}
|