value.go 964 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package config
  2. import (
  3. "bytes"
  4. "io/ioutil"
  5. "os"
  6. "strings"
  7. "text/template"
  8. )
  9. var (
  10. glbEnvs map[string]string
  11. )
  12. func init() {
  13. glbEnvs = make(map[string]string)
  14. envs := os.Environ()
  15. for _, env := range envs {
  16. kv := strings.Split(env, "=")
  17. if len(kv) != 2 {
  18. continue
  19. }
  20. glbEnvs[kv[0]] = kv[1]
  21. }
  22. }
  23. type Values struct {
  24. Envs map[string]string // environment vars
  25. }
  26. func GetValues() *Values {
  27. return &Values{
  28. Envs: glbEnvs,
  29. }
  30. }
  31. func RenderContent(in string) (out string, err error) {
  32. tmpl, errRet := template.New("frp").Parse(in)
  33. if errRet != nil {
  34. err = errRet
  35. return
  36. }
  37. buffer := bytes.NewBufferString("")
  38. v := GetValues()
  39. err = tmpl.Execute(buffer, v)
  40. if err != nil {
  41. return
  42. }
  43. out = buffer.String()
  44. return
  45. }
  46. func GetRenderedConfFromFile(path string) (out string, err error) {
  47. var b []byte
  48. b, err = ioutil.ReadFile(path)
  49. if err != nil {
  50. return
  51. }
  52. content := string(b)
  53. out, err = RenderContent(content)
  54. return
  55. }