LapisDeploy/config.go

42 lines
1.1 KiB
Go

// package main is the main package for the LapisDeploy program
package main
import (
"encoding/json"
"log"
"os"
)
// Configuration stores information retrieved from a configuration file
type Configuration struct {
port int
sites_dir string
matrix struct {
homeserver string
username string
password string
room_id string
}
}
// parseConfig parses the JSON configuration file at 'path' and stores the contents in 'config'
func parseConfig(path string, config *Configuration) {
file, _ := os.Open(path)
var data map[string]interface{}
err := json.NewDecoder(file).Decode(&data)
if err != nil {
log.Panic("Failed to parse config:", err)
}
file.Close()
// Main configuration
config.port = int(data["port"].(float64)) // this conversion makes no sense
config.sites_dir = data["sites_dir"].(string)
// Matrix configuration
matrix := data["matrix"].(map[string]interface{})
config.matrix.homeserver = matrix["homeserver"].(string)
config.matrix.username = matrix["username"].(string)
config.matrix.password = matrix["password"].(string)
config.matrix.room_id = matrix["room_id"].(string)
}