urbit.go 986 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package config
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "goseg/structs"
  6. "io/ioutil"
  7. "path/filepath"
  8. "sync"
  9. )
  10. var (
  11. UrbitsConfig = make(map[string]structs.UrbitDocker)
  12. urbitMutex sync.RWMutex
  13. )
  14. func UrbitConf(pier string) structs.UrbitDocker {
  15. urbitMutex.Lock()
  16. defer urbitMutex.Unlock()
  17. return UrbitsConfig[pier]
  18. }
  19. func LoadUrbitConfig(pier string) error {
  20. urbitMutex.Lock()
  21. defer urbitMutex.Unlock()
  22. // pull docker info from json
  23. confPath := filepath.Join(BasePath, "settings", "pier", pier+".json")
  24. file, err := ioutil.ReadFile(confPath)
  25. if err != nil {
  26. errmsg := fmt.Sprintf("Unable to load %s config: %v", pier, err)
  27. return fmt.Errorf(errmsg) // Return an error instead of a string
  28. }
  29. // Unmarshal JSON
  30. var targetStruct structs.UrbitDocker
  31. if err := json.Unmarshal(file, &targetStruct); err != nil {
  32. errmsg := fmt.Sprintf("Error decoding %s JSON: %v", pier, err)
  33. return fmt.Errorf(errmsg)
  34. }
  35. // Store in var
  36. UrbitsConfig[pier] = targetStruct
  37. return nil
  38. }