TemplateConfig.fromYamlMap constructor
TemplateConfig.fromYamlMap(
- 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(),
);
}