Skip to content

Configuration Module

The Configuration module provides settings and preferences management capabilities for the UmbraCore framework.

Overview

The Configuration module handles application settings, user preferences, and framework configuration, offering a consistent and type-safe approach to managing configuration across the UmbraCore framework.

Features

  • Type-safe configuration management
  • Default value handling
  • Configuration validation
  • Secure storage for sensitive settings
  • Configuration migration support

Usage

import Configuration

// Access application configuration
let config = Configuration.shared

// Read configuration values
let backupInterval = config.get(\.backupSchedule.intervalHours)
let compressionLevel = config.get(\.backup.compressionLevel)
let isEncryptionEnabled = config.get(\.security.encryptBackups)

// Update configuration values
try config.set(\.backup.compressionLevel, to: 6)
try config.set(\.security.encryptBackups, to: true)

// Use strongly-typed configuration
struct BackupSettings: ConfigurationProvider {
    @ConfigurationProperty(\.backup.excludedPaths)
    var excludedPaths: [String]

    @ConfigurationProperty(\.backup.maxParallelOperations)
    var maxParallelOperations: Int
}

let backupSettings = BackupSettings()
print("Excluded paths: \(backupSettings.excludedPaths)")
print("Max parallel operations: \(backupSettings.maxParallelOperations)")

Integration

The Configuration module integrates with:

  • UmbraCore for framework-level settings
  • UmbraKeychainService for secure settings storage
  • RepositoryManager for repository configuration
  • BackupCoordinator for backup settings

Security Considerations

  • Sensitive configuration values are stored securely
  • Configuration validation prevents insecure settings
  • Configuration access is controlled through appropriate access levels
  • Configuration migration handles changes safely

Source Code

The source code for this module is located in the Sources/Configuration directory of the UmbraCore repository.