🎯 Hasta ahora, gestionar variables de entorno, archivos JSON, argumentos de línea de comandos y secretos requería código repetitivo y específico para cada origen. Cada fuente necesitaba su propia lógica de lectura, haciendo que el código de la aplicación quedara acoplado a proveedores concretos.
✨ Swift Configuration introduce una abstración limpia entre cómo accedemos a la configuración y de dónde proviene. Esta separación permite que las librerías acepten una configuración sin dictar el origen. Esto habilita a su vez la composición de configuraciones entre diferentes entornos de despliegue. El verdadero valor no está en leer archivos, sino en la flexibilidad que aporta.
🏗️ La librería permite combinar múltiples proveedores en una jerarquía clara donde los valores de mayor prioridad sobrescriben a los de menor prioridad. Por ejemplo, variables de entorno sobre archivos JSON. Esta jerarquía elimina la ambigüedad sobre qué fuente de configuración se está usando realmente, seguido de valores predeterminados explícitos.
let config = ConfigReader(providers: [
EnvironmentVariablesProvider(),
try await FileProvider<JSONSnapshot>(filePath: "/etc/config.json")
])
let timeout = config.int(forKey: "http.timeout", default: 60)
⚙️ Los proveedores incluidos son EnvironmentVariablesProvider para variables de entorno, FileProvider para JSON y YAML, y CommandLineArgumentsProvider para argumentos de línea de comando. ConfigProvider permite a cualquiera crear integraciones personalizadas. Actualmente, existen integraciones experimentales con AWS, Vault y TOML. Al ser un protocolo público, ConfigProvider facilita a los desarrolladores la creación de conectores con sistemas externos.
🔥 Las capacidades avanzadas incluyen: recarga en caliente sin reiniciar el servicio, observadores de cambios en configuración, organización mediante espacios de nombres y lectores con ámbito específico. También ofrece registro de accesos para depuración detallada y ofuscación automática de claves secretas para evitar exposición accidental de valores sensibles en logs.
🚀 Con la versión 1.0, la API es estable. Proyectos como Vapor o Hummingbird ya están experimentando con la adopción. La estabilidad permite que otras librerías y herramientas dependan de ella. La librería sobresale en el ecosistema Swift del lado del servidor, donde la configuración se lee desde múltiples fuentes y/o sistemas. Es igualmente útil en herramientas de línea de comandos y aplicaciones GUI.
👨💻 Si trabajas con Swift en servidor o necesitas gestión flexible de configuración, Swift Configuration merece tu atención. ¿Ya la has probado en tus proyectos?


Deja un comentario