loadPackagesConfig function

Future<Map<String, dynamic>> loadPackagesConfig(
  1. ExecutionEnv env
)

Loads plugin configuration from the environment cwd's .fah/packages.yaml. Returns a map of plugin name -> config.

Implementation

Future<Map<String, dynamic>> loadPackagesConfig(ExecutionEnv env) async {
  final String source;
  switch (await env.readTextFile('${env.cwd}/.fah/packages.yaml')) {
    case Ok(:final value):
      source = value;
    case Err(:final error) when error.code == FileErrorCode.notFound:
      return const {};
    case Err(:final error):
      throw ConfigException('failed to parse .fah/packages.yaml: $error');
  }
  try {
    final doc = yaml.loadYaml(source);
    if (doc is! Map) return const {};
    return Map<String, dynamic>.from(
      doc,
    ).map((name, value) => MapEntry(name, _plainYaml(value)));
  } on Object catch (error) {
    throw ConfigException('failed to parse .fah/packages.yaml: $error');
  }
}