add auth for future https srever and cfgHandler to load configuration
This commit is contained in:
63
cfg/cfg.go
Normal file
63
cfg/cfg.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package cfg
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
type Cfg struct {
|
||||
Name string
|
||||
Dir string
|
||||
}
|
||||
|
||||
// Initializes new config handler
|
||||
// dir is config directory from working dir on
|
||||
// name is filename, file extention is automatically added '.cfg'
|
||||
// file is in yaml format
|
||||
// if file exists it will read its content in to the driver
|
||||
func NewCfgHandler(dir, name string) *Cfg {
|
||||
return &Cfg{
|
||||
Dir: dir,
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Cfg) SaveCfg(data any) error {
|
||||
if _, err := os.Stat(c.Dir); err != nil {
|
||||
if err := os.MkdirAll(c.Dir, 0666); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
f, err := os.Create(path.Join(c.Dir, c.Name) + ".cfg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
encoder := yaml.NewEncoder(f)
|
||||
encoder.SetIndent(2)
|
||||
|
||||
if err := encoder.Encode(data); err != nil {
|
||||
return err
|
||||
}
|
||||
encoder.Close()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cfg) LoadCfg(data any) error {
|
||||
p := path.Join(c.Dir, c.Name) + ".cfg"
|
||||
if _, err := os.Stat(p); err != nil {
|
||||
return fmt.Errorf("no configuration file: '%s' found", p)
|
||||
}
|
||||
|
||||
b, err := os.ReadFile(p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return yaml.Unmarshal(b, data)
|
||||
}
|
Reference in New Issue
Block a user