package toolkit import ( "os" "regexp" ) // envVarRe — плейсхолдер ${VAR} (та же конвенция, что в config.json сервера). var envVarRe = regexp.MustCompile(`\$\{([A-Za-z_][A-Za-z0-9_]*)\}`) // Expand разворачивает ${VAR} в сырых байтах конфига. Отсутствующая // переменная заменяется пустой строкой: дальнейшая валидация отвергнет // пустое обязательное поле (fail-closed), а не подставит мусор. // // Это lax-вариант. Для строгих случаев (DSN с доменными ошибками) сервер // держит собственный strict-экспандер — не обобщаем преждевременно. func Expand(data []byte) []byte { return envVarRe.ReplaceAllFunc(data, func(m []byte) []byte { name := string(m[2 : len(m)-1]) // вырезаем имя из "${...}" return []byte(os.Getenv(name)) }) }