Move config structs to packages

This commit is contained in:
Julian Kornberger 2018-01-13 14:41:49 +01:00
parent 5ca13ff9e5
commit f5b24dfab2
7 changed files with 54 additions and 54 deletions

View File

@ -2,14 +2,24 @@ package cmd
import ( import (
"fmt" "fmt"
"io/ioutil"
"os" "os"
"github.com/FreifunkBremen/yanic/database" "github.com/FreifunkBremen/yanic/database"
"github.com/FreifunkBremen/yanic/respond" "github.com/FreifunkBremen/yanic/respond"
"github.com/FreifunkBremen/yanic/runtime" "github.com/FreifunkBremen/yanic/runtime"
"github.com/FreifunkBremen/yanic/runtime/config" "github.com/FreifunkBremen/yanic/webserver"
"github.com/naoina/toml"
) )
// Config represents the whole configuration
type Config struct {
Respondd respond.Config
Webserver webserver.Config
Nodes runtime.NodesConfig
Database database.Config
}
var ( var (
configPath string configPath string
collector *respond.Collector collector *respond.Collector
@ -17,11 +27,28 @@ var (
nodes *runtime.Nodes nodes *runtime.Nodes
) )
func loadConfig() *config.Config { func loadConfig() *Config {
config, err := config.ReadConfigFile(configPath) config, err := ReadConfigFile(configPath)
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, "unable to load config file:", err) fmt.Fprintln(os.Stderr, "unable to load config file:", err)
os.Exit(2) os.Exit(2)
} }
return config return config
} }
// ReadConfigFile reads a config model from path of a yml file
func ReadConfigFile(path string) (config *Config, err error) {
config = &Config{}
file, err := ioutil.ReadFile(path)
if err != nil {
return nil, err
}
err = toml.Unmarshal(file, config)
if err != nil {
return nil, err
}
return
}

View File

@ -1,4 +1,4 @@
package config package cmd
import ( import (
"testing" "testing"
@ -10,8 +10,8 @@ import (
func TestReadConfig(t *testing.T) { func TestReadConfig(t *testing.T) {
assert := assert.New(t) assert := assert.New(t)
config, err := ReadConfigFile("../../config_example.toml") config, err := ReadConfigFile("../config_example.toml")
assert.NoError(err, "no error during reading") assert.NoError(err)
assert.NotNil(config) assert.NotNil(config)
assert.True(config.Respondd.Enable) assert.True(config.Respondd.Enable)
@ -42,7 +42,7 @@ func TestReadConfig(t *testing.T) {
graphitedb = dbs[0] graphitedb = dbs[0]
assert.Equal(graphitedb["address"], "localhost:2003") assert.Equal(graphitedb["address"], "localhost:2003")
_, err = ReadConfigFile("testdata/config_failed.toml") _, err = ReadConfigFile("testdata/config_invalid.toml")
assert.Error(err, "not unmarshalable") assert.Error(err, "not unmarshalable")
assert.Contains(err.Error(), "Near line ") assert.Contains(err.Error(), "Near line ")

1
cmd/testdata/config_invalid.toml vendored Normal file
View File

@ -0,0 +1 @@
foobar

12
respond/config.go Normal file
View File

@ -0,0 +1,12 @@
package respond
import "github.com/FreifunkBremen/yanic/lib/duration"
type Config struct {
Enable bool `toml:"enable"`
Synchronize duration.Duration `toml:"synchronize"`
Interfaces []string `toml:"interfaces"`
Sites []string `toml:"sites"`
Port int `toml:"port"`
CollectInterval duration.Duration `toml:"collect_interval"`
}

View File

@ -1,46 +0,0 @@
package config
import (
"io/ioutil"
"github.com/BurntSushi/toml"
"github.com/FreifunkBremen/yanic/database"
"github.com/FreifunkBremen/yanic/lib/duration"
"github.com/FreifunkBremen/yanic/runtime"
)
//Config the config File of this daemon
type Config struct {
Respondd struct {
Enable bool `toml:"enable"`
Synchronize duration.Duration `toml:"synchronize"`
Interfaces []string `toml:"interfaces"`
Sites []string `toml:"sites"`
Port int `toml:"port"`
CollectInterval duration.Duration `toml:"collect_interval"`
}
Webserver struct {
Enable bool `toml:"enable"`
Bind string `toml:"bind"`
Webroot string `toml:"webroot"`
}
Nodes runtime.NodesConfig
Database database.Config
}
// ReadConfigFile reads a config model from path of a yml file
func ReadConfigFile(path string) (config *Config, err error) {
config = &Config{}
file, err := ioutil.ReadFile(path)
if err != nil {
return nil, err
}
err = toml.Unmarshal(file, config)
if err != nil {
return nil, err
}
return
}

View File

@ -1 +0,0 @@
asdas

7
webserver/config.go Normal file
View File

@ -0,0 +1,7 @@
package webserver
type Config struct {
Enable bool `toml:"enable"`
Bind string `toml:"bind"`
Webroot string `toml:"webroot"`
}