ClonifySettings.fromYaml constructor

ClonifySettings.fromYaml(
  1. YamlMap yaml
)

Creates a ClonifySettings instance from a YAML map.

Parses the YAML configuration file and creates a settings object. Provides default values for missing optional fields.

Example:

final yaml = loadYaml('''
firebase:
  enabled: true
  settings_file: firebase_settings.yaml
company_name: My Company
default_color: '#FF5733'
''');
final settings = ClonifySettings.fromYaml(yaml);

Implementation

factory ClonifySettings.fromYaml(YamlMap yaml) {
  // Parse custom fields if they exist
  List<CustomField> customFields = [];
  if (yaml[ClonifySettingsKeys.customFields] != null) {
    final fields = yaml[ClonifySettingsKeys.customFields] as YamlList;
    customFields = fields
        .map((field) => CustomField.fromYaml(field as Map<dynamic, dynamic>))
        .toList();
  }

  return ClonifySettings(
    firebaseEnabled:
        yaml[ClonifySettingsKeys.firebase][ClonifySettingsKeys.enabled] ??
        false,
    firebaseSettingsFilePath:
        yaml[ClonifySettingsKeys.firebase][ClonifySettingsKeys
            .settingsFile] ??
        '',
    fastlaneEnabled:
        yaml[ClonifySettingsKeys.fastlane][ClonifySettingsKeys.enabled] ??
        false,
    fastlaneSettingsFilePath:
        yaml[ClonifySettingsKeys.fastlane][ClonifySettingsKeys
            .settingsFile] ??
        '',
    companyName: yaml[ClonifySettingsKeys.companyName] ?? '',
    defaultColor: yaml[ClonifySettingsKeys.defaultColor] ?? '#FFFFFF',
    needsLauncherIcon: yaml[ClonifySettingsKeys.needsLauncherIcon] ?? false,
    needsSplashScreen: yaml[ClonifySettingsKeys.needsSplashScreen] ?? false,
    needsLogo: yaml[ClonifySettingsKeys.needsLogo] ?? false,
    updateAndroidInfo: yaml[ClonifySettingsKeys.updateAndroidInfo] ?? true,
    updateIOSInfo: yaml[ClonifySettingsKeys.updateIOSInfo] ?? true,
    customFields: customFields,
  );
}