Друзья, привет!
Apple выпустила долгожданную библиотеку
Swift Configuration - универсальное решение для управления настройками в Swift-проектах. Расскажу, чем она полезна и как начать ее использовать.
Что такое Swift Configuration:
Данная библиотека предоставляет единый интерфейс для чтения настроек из различных источников. Больше не нужно писать разный код для работы с переменными окружения, JSON-файлами и аргументами командной строки.
Основные возможности:
- Единый API: одинаковый код для всех источников настроек.
- Горячее обновление: изменения применяются без перезапуска приложения.
- Поддержка вложенности: работа со сложными структурами настроек.
- Приоритеты источников: четкая иерархия важности настроек.
Пример:
import Configuration
// Настройка чтения из разных источников
let config = ConfigReader(providers: [
EnvironmentVariablesProvider(), // Переменные окружения
CommandLineArgumentsProvider(), // Аргументы командной строки
try await JSONProvider(filePath: "/app/config.json") // JSON-файл
])
// Чтение значения (ищет в порядке приоритета)
let timeout = config.int(forKey: "http.timeout", default: 30)
let host = config.string(forKey: "database.host", default: "localhost")
Как это работает в реальном проекте:
Представьте, у вас есть базовые настройки в
JSON:
{
"database": {
"host": "localhost",
"port": 5432
}
}
Но для прода вы можете переопределить их через переменные окружения:
export DATABASE_HOST=production_db.test.ru
Библиотека автоматически выберет значение из переменной окружения как более приоритетное.
Преимущества:
- Снижение количества шаблонного кода: больше не нужно писать парсеры для каждого типа конфигов.
- Упрощение тестирования: легко подменять настройки в тестах.
- Гибкость развертывания: разные среды через разные источники настроек.
Вывод:
Swift Configuration - это серьезный шаг к стандартизации работы с настройками в Swift-экосистеме. Библиотека пока сыровата для продакшена, но идеи стоят внимания. Особенно ценна унификация доступа к разным источникам конфигов.