TemplateConfig.fromYamlMap constructor

TemplateConfig.fromYamlMap(
  1. Map yamlMap
)

Factory constructor to parse YamlMap or Map into a TemplateConfig.

Implementation

factory TemplateConfig.fromYamlMap(Map<dynamic, dynamic> yamlMap) {
  final name = yamlMap['name'] as String?;
  if (name == null || name.trim().isEmpty) {
    throw const ConfigurationException(
        'Template config is missing a valid "name" field.');
  }

  final description =
      yamlMap['description'] as String? ?? 'No description provided.';

  final depsRaw = yamlMap['dependencies'] as List?;
  final deps = depsRaw != null
      ? depsRaw
          .map((e) => DependencyConfig.fromYaml(e, isDevDependency: false))
          .toList()
      : <DependencyConfig>[];

  final devDepsRaw = yamlMap['dev_dependencies'] as List?;
  final devDeps = devDepsRaw != null
      ? devDepsRaw
          .map((e) => DependencyConfig.fromYaml(e, isDevDependency: true))
          .toList()
      : <DependencyConfig>[];

  final foldersRaw = yamlMap['folders'] as List?;
  final folders = foldersRaw != null
      ? foldersRaw.map((e) => FolderConfig.fromYaml(e)).toList()
      : <FolderConfig>[];

  final filesRaw = yamlMap['files'] as List?;
  final files = filesRaw != null
      ? filesRaw.map((e) => FileConfig.fromYaml(e)).toList()
      : <FileConfig>[];

  final genFiles = yamlMap['generated_files'] as Map?;
  final assetsClassPath = genFiles?['assets_class'] as String? ??
      'lib/core/constants/assets.dart';

  return TemplateConfig(
    name: name.trim(),
    description: description.trim(),
    dependencies: List.unmodifiable(deps),
    devDependencies: List.unmodifiable(devDeps),
    folders: List.unmodifiable(folders),
    files: List.unmodifiable(files),
    assetsClassPath: assetsClassPath.trim(),
  );
}