43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
// package main is the main package for the LapisDeploy program
|
|
package main
|
|
|
|
import (
|
|
"os"
|
|
"encoding/json"
|
|
"log"
|
|
)
|
|
|
|
// 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)
|
|
}
|
|
|