Something went wrong on our end
-
Volker Schukai authoredVolker Schukai authored
export.go 1.58 KiB
package configuration
import (
"encoding/json"
"github.com/magiconair/properties"
"io"
"os"
"github.com/pelletier/go-toml/v2"
"gopkg.in/yaml.v3"
)
func (s *setting[C]) Export() *setting[C] {
return s
}
func (s *setting[C]) writeJson(writer io.Writer) error {
encoder := json.NewEncoder(writer)
return encoder.Encode(s.config)
}
func (s *setting[C]) writeYaml(writer io.Writer) error {
encoder := yaml.NewEncoder(writer)
return encoder.Encode(s.config)
}
func (s *setting[C]) writeToml(writer io.Writer) error {
encoder := toml.NewEncoder(writer)
return encoder.Encode(s.config)
}
func (s *setting[C]) writeProperties(writer io.Writer) error {
m, errors := getMapForProperties[C](s.config)
if len(errors) > 0 {
for _, err := range errors {
s.errors = append(s.errors, err)
}
}
p := properties.LoadMap(m)
_, err := p.Write(writer, properties.UTF8)
return err
}
func (s *setting[C]) WriteFile(fn string, format Format) *setting[C] {
var err error
var file *os.File
if fn == "" {
file = os.Stdout
} else {
file, err = os.Create(fn)
if err != nil {
s.errors = append(s.errors, err)
return s
}
}
defer file.Close()
s.Write(io.Writer(file), format)
return s
}
func (s *setting[C]) Write(writer io.Writer, format Format) *setting[C] {
var err error
switch format {
case Json:
err = s.writeJson(writer)
case Yaml:
err = s.writeYaml(writer)
case Toml:
err = s.writeToml(writer)
case Properties:
err = s.writeProperties(writer)
default:
err = newFormatNotSupportedError(format)
}
if err != nil {
s.errors = append(s.errors, err)
}
return s
}