loadAnalysisOptions static method

Map<String, dynamic>? loadAnalysisOptions({
  1. String? workingDirectory,
  2. String? homeDirectory,
  3. Logger? log,
})

Loads the top-level analysis_options section from rekeens.yaml.

Unlike load (which reads the defaults section), this returns the full nested structure as plain Dart maps/lists so it can be serialized back to analysis_options.yaml in the generated project.

Implementation

static Map<String, dynamic>? loadAnalysisOptions({
  String? workingDirectory,
  String? homeDirectory,
  Logger? log,
}) {
  final effectiveLog = log ?? logger;
  final configFile = _findConfigFile(
    workingDirectory: workingDirectory,
    homeDirectory: homeDirectory,
  );
  if (configFile == null) return null;

  try {
    final content = File(configFile).readAsStringSync();
    final yamlMap = loadYaml(content);
    if (yamlMap is! Map) return null;

    final analysisOptions = yamlMap['analysis_options'];
    if (analysisOptions is YamlMap) {
      final converted = _convertYamlNode(analysisOptions);
      if (converted is Map<String, dynamic>) return converted;
    }
    return null;
  } catch (error) {
    effectiveLog.warn(
      'Failed to parse analysis_options in rekeens.yaml at "$configFile": '
      '$error. Ignoring analysis_options config.',
    );
    return null;
  }
}