package config import ( "encoding/json" "fmt" "goseg/structs" "io/ioutil" "path/filepath" "sync" ) var ( UrbitsConfig = make(map[string]structs.UrbitDocker) urbitMutex sync.RWMutex ) func UrbitConf(pier string) structs.UrbitDocker { urbitMutex.Lock() defer urbitMutex.Unlock() return UrbitsConfig[pier] } func LoadUrbitConfig(pier string) error { urbitMutex.Lock() defer urbitMutex.Unlock() // pull docker info from json confPath := filepath.Join(BasePath, "settings", "pier", pier+".json") file, err := ioutil.ReadFile(confPath) if err != nil { errmsg := fmt.Sprintf("Unable to load %s config: %v", pier, err) return fmt.Errorf(errmsg) // Return an error instead of a string } // Unmarshal JSON var targetStruct structs.UrbitDocker if err := json.Unmarshal(file, &targetStruct); err != nil { errmsg := fmt.Sprintf("Error decoding %s JSON: %v", pier, err) return fmt.Errorf(errmsg) } // Store in var UrbitsConfig[pier] = targetStruct return nil }