Browse Source

Move config structs to packages

respondd-crashed
Julian Kornberger 3 years ago
parent
commit
f5b24dfab2
7 changed files with 54 additions and 54 deletions
  1. + 30
    - 3
      cmd/config.go
  2. + 4
    - 4
      cmd/config_test.go
  3. + 1
    - 0
      cmd/testdata/config_invalid.toml
  4. + 12
    - 0
      respond/config.go
  5. + 0
    - 46
      runtime/config/config.go
  6. + 0
    - 1
      runtime/config/testdata/config_failed.toml
  7. + 7
    - 0
      webserver/config.go

+ 30
- 3
cmd/config.go

@ -2,14 +2,24 @@ package cmd
import (
"fmt"
"io/ioutil"
"os"
"github.com/FreifunkBremen/yanic/database"
"github.com/FreifunkBremen/yanic/respond"
"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 (
configPath string
collector *respond.Collector
@ -17,11 +27,28 @@ var (
nodes *runtime.Nodes
)
func loadConfig() *config.Config {
config, err := config.ReadConfigFile(configPath)
func loadConfig() *Config {
config, err := ReadConfigFile(configPath)
if err != nil {
fmt.Fprintln(os.Stderr, "unable to load config file:", err)
os.Exit(2)
}
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
}

runtime/config/config_test.go → cmd/config_test.go

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

+ 1
- 0
cmd/testdata/config_invalid.toml

@ -0,0 +1 @@
foobar

+ 12
- 0
respond/config.go

@ -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"`
}

+ 0
- 46
runtime/config/config.go

@ -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
}

+ 0
- 1
runtime/config/testdata/config_failed.toml

@ -1 +0,0 @@
asdas

+ 7
- 0
webserver/config.go

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

Loading…
Cancel
Save