(section *ini.Section, keyName string)
| 80 | } |
| 81 | |
| 82 | func parseString(section *ini.Section, keyName string) (string, error) { |
| 83 | key := section.Key(strings.ToLower(keyName)) |
| 84 | if key == nil { |
| 85 | return "", errors.New(keyName + " should not be empty") |
| 86 | } |
| 87 | value := key.String() |
| 88 | if strings.HasPrefix(value, "$") { |
| 89 | if strings.HasPrefix(value, "$$") { |
| 90 | return strings.Replace(value, "$$", "$", 1), nil |
| 91 | } |
| 92 | var ok bool |
| 93 | value, ok = os.LookupEnv(strings.TrimPrefix(value, "$")) |
| 94 | if !ok { |
| 95 | return "", errors.New(keyName + " references unset environment variable " + key.String()) |
| 96 | } |
| 97 | return value, nil |
| 98 | } |
| 99 | return key.String(), nil |
| 100 | } |
| 101 | |
| 102 | func parsePort(section *ini.Section, keyName string) (int, error) { |
| 103 | key := section.Key(keyName) |
no outgoing calls
no test coverage detected