14.1 Статическая конфигурация
config App {
dbUrl: DbUrl
port: Port = DEFAULT_PORT
stripeKey: secret<str>
profile dev { dbUrl = "sqlite://dev.db" }
profile prod { port = 443 }
}
let app = App.get()config Имя { … }объявляет типизированный конфиг. Поля — как уdata;profile имя { поле = значение }задаёт значения профиля.- Источники в порядке приоритета: флаг
--set App.port=8080→ переменная окруженияAPP_PORT(имя конфига и поле в UPPER_SNAKE_CASE, вложенность через__) → файлconfig/<профиль>.toml→ блокprofile→ значение по умолчанию. - Профиль выбирается флагом
--profileилиOXL_PROFILE; по умолчаниюdev. - Конфиг загружается на шаге 2 запуска (§2.4). Неизвестный ключ, неверный тип, нарушение уточнения или отсутствие обязательного поля — сообщение с указанием источника и завершение с кодом 78.
App.get()возвращаетArc<frozen App>; значение не меняется до перезапуска.const— для значений, известных при сборке и не зависящих от окружения.
Связанные диагностики
См. также
Исходник: docs/spec/oxl-standard.md