Files
jpictl/pkg/ceph/config_parser.go
T
amery a1ee960ec9 pkg/ceph: [WIP]
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-09-01 21:30:08 +00:00

55 lines
1.0 KiB
Go

package ceph
import (
"io/fs"
"log"
"asciigoat.org/ini/basic"
"darvaza.org/core"
)
func loadConfSection(out *Config, src *basic.Section) error {
switch src.Key {
case "global":
return loadGlobalConfSection(out, src)
default:
return core.Wrapf(fs.ErrInvalid, "unknown section %q", src.Key)
}
}
func loadGlobalConfSection(out *Config, src *basic.Section) error {
var cfg GlobalConfig
for _, field := range src.Fields {
if err := loadGlobalConfField(&cfg, field); err != nil {
return core.Wrap(err, "global")
}
}
out.Global = cfg
return nil
}
func loadGlobalConfField(_ *GlobalConfig, field basic.Field) error {
log.Printf("%s[%q] = %q", "global", field.Key, field.Value)
return nil
}
func newConfigFromDocument(doc *basic.Document) (*Config, error) {
var out Config
if len(doc.Global) > 0 {
err := core.Wrap(fs.ErrInvalid, "fields before the first section")
return nil, err
}
for i := range doc.Sections {
src := &doc.Sections[i]
if err := loadConfSection(&out, src); err != nil {
return nil, err
}
}
return &out, nil
}