// 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) }