Move config structs to packages
This commit is contained in:
parent
5ca13ff9e5
commit
f5b24dfab2
@ -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
|
||||||
|
}
|
||||||
|
@ -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
1
cmd/testdata/config_invalid.toml
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
foobar
|
12
respond/config.go
Normal file
12
respond/config.go
Normal 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"`
|
||||||
|
}
|
@ -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
|
|
||||||
}
|
|
1
runtime/config/testdata/config_failed.toml
vendored
1
runtime/config/testdata/config_failed.toml
vendored
@ -1 +0,0 @@
|
|||||||
asdas
|
|
7
webserver/config.go
Normal file
7
webserver/config.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package webserver
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
Enable bool `toml:"enable"`
|
||||||
|
Bind string `toml:"bind"`
|
||||||
|
Webroot string `toml:"webroot"`
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user