| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package docker
- import (
- "encoding/json"
- "fmt"
- "goseg/config"
- "goseg/structs"
- "io/ioutil"
- "path/filepath"
- "sync"
- )
- var (
- urbitsConfig = make(map[string]structs.UrbitDocker)
- urbitMutex sync.RWMutex
- )
- func LoadUrbits() error {
- logger.Info("Loading Urbit ships")
- // Loop through pier list
- conf := config.Conf()
- for pier, _ := range conf.Piers {
- logger.Info(fmt.Sprintf("Loading pier %s",pier))
- err := StartContainer(pier, "urbit")
- if err != nil {
- logger.Error(fmt.Sprintf("%v", err))
- continue
- }
- }
- // apply latest version info (if automated updates)
- // start containers
- return nil
- }
- func Conf(pier string) structs.UrbitDocker {
- urbitMutex.Lock()
- defer urbitMutex.Unlock()
- return urbitsConfig[pier]
- }
- func LoadConfig(pier string) error {
- urbitMutex.Lock()
- defer urbitMutex.Unlock()
- // pull docker info from json
- confPath := filepath.Join(config.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
- }
|