summaryrefslogtreecommitdiff
path: root/src/runtime_config.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime_config.go')
-rw-r--r--src/runtime_config.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/runtime_config.go b/src/runtime_config.go
new file mode 100644
index 0000000..07e4a7c
--- /dev/null
+++ b/src/runtime_config.go
@@ -0,0 +1,62 @@
+// vim: shiftwidth=4 tabstop=4 noexpandtab
+
+package main
+
+import (
+ "log"
+ "io/ioutil"
+ "os"
+ "flag"
+ "encoding/json"
+)
+
+type RuntimeConfig struct {
+ Flag FlagConfig
+ Web WebConfig `json:"webserver"`
+ Transport TransportConfig `json:"file_transport"`
+}
+
+func GetRuntimeConfig() RuntimeConfig {
+
+ retval := RuntimeConfig{}
+
+ // read CLI parameters
+ retval.Flag.read()
+
+ // open the config file
+ configFile, err := os.Open(retval.Flag.ConfigPath)
+ defer configFile.Close()
+ if err != nil {
+ log.Fatalf("Could not open configuration file %s", retval.Flag.ConfigPath)
+ }
+
+ // read byte content
+ byteData, err := ioutil.ReadAll(configFile)
+ if err != nil {
+ log.Fatalf("Could not read configuration file %s", retval.Flag.ConfigPath)
+ }
+
+ // parse content to config structs
+ err = json.Unmarshal(byteData, &retval)
+ if err != nil {
+ log.Fatalf("Could not parse configuration file %s", retval.Flag.ConfigPath)
+ }
+
+ // patch default config in case of debugging
+ if retval.Flag.Debug {
+ retval.Transport.Enabled = true
+ }
+
+ return retval
+}
+
+type FlagConfig struct {
+ ConfigPath string
+ Debug bool
+}
+
+func (flagConfig *FlagConfig) read() {
+ flag.StringVar(&(flagConfig.ConfigPath), "c", "/etc/birdscan/config.json", "Path to birdscan configuration file")
+ flag.BoolVar(&(flagConfig.Debug), "d", false, "A debug flag to be used by source repository Makefile")
+ flag.Parse()
+}