forge-toolkit: хелперы для разработки MCP-серверов на Go. - toolkit: args/schema/result/env/probe/server - toolkit/validate: валидаторы синтаксиса - configreload: live-reload конфига по контент-хэшу - docs: ARCHITECTURE, quickstart, mcp-contract - template/ и examples/hello-tool/ - CI (Gitea Actions), лицензия Apache-2.0
23 lines
1.0 KiB
Go
23 lines
1.0 KiB
Go
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))
|
|
})
|
|
}
|