Initial commit: Import from /home/simon/test/ac
This commit is contained in:
71
src/pkg/factory/config.go
Normal file
71
src/pkg/factory/config.go
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* AC Configuration Factory
|
||||
*/
|
||||
|
||||
package factory
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/asaskevich/govalidator"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
|
||||
"ac/internal/logger"
|
||||
)
|
||||
|
||||
const (
|
||||
AcDefaultConfigPath = "/usr/local/etc/ac/ac.yaml"
|
||||
CapwapDefaultPort = 5246
|
||||
MqttDefaultPort = 5247
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
DebugLevel string `yaml:"debugLevel" valid:"required,in(trace|debug|info|warn|error|fatal|panic)"`
|
||||
CapwapAddr string `yaml:"capwapAddr,omitempty" valid:"required,host"`
|
||||
sync.RWMutex
|
||||
}
|
||||
|
||||
func (c *Config) Validate() (bool, error) {
|
||||
if _, err := govalidator.ValidateStruct(c); err != nil {
|
||||
return false, appendInvalid(err)
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func appendInvalid(err error) error {
|
||||
var errs govalidator.Errors
|
||||
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
es := err.(govalidator.Errors).Errors()
|
||||
for _, e := range es {
|
||||
errs = append(errs, fmt.Errorf("Invalid %w", e))
|
||||
}
|
||||
|
||||
return error(errs)
|
||||
}
|
||||
|
||||
func (c *Config) Print() {
|
||||
spew.Config.Indent = "\t"
|
||||
str := spew.Sdump(c)
|
||||
logger.CfgLog.Infof("==================================================")
|
||||
logger.CfgLog.Infof("%s", str)
|
||||
logger.CfgLog.Infof("==================================================")
|
||||
}
|
||||
|
||||
func (c *Config) SetLogLevel(level string) {
|
||||
c.Lock()
|
||||
defer c.Unlock()
|
||||
|
||||
c.DebugLevel = level
|
||||
}
|
||||
|
||||
func (c *Config) GetLogLevel() string {
|
||||
c.RLock()
|
||||
defer c.RUnlock()
|
||||
return c.DebugLevel
|
||||
}
|
||||
Reference in New Issue
Block a user