DependencyConfig.fromYaml constructor
DependencyConfig.fromYaml(
- dynamic entry, {
- bool isDevDependency = false,
Parse a dependency entry from YAML (String or Map).
Implementation
factory DependencyConfig.fromYaml(dynamic entry,
{bool isDevDependency = false}) {
if (entry is String) {
final trimmed = entry.trim();
if (trimmed.contains(':')) {
final parts = trimmed.split(':');
final ver = parts.sublist(1).join(':').trim();
return DependencyConfig(
name: parts[0].trim(),
version: ver.isNotEmpty ? ver : null,
isDevDependency: isDevDependency,
);
}
return DependencyConfig(
name: trimmed,
isDevDependency: isDevDependency,
);
} else if (entry is Map) {
if (entry.containsKey('name')) {
final name = entry['name'] as String?;
if (name == null || name.isEmpty) {
throw const FormatException(
'Dependency entry must contain a non-empty "name" key.');
}
final ver = entry['version']?.toString().trim();
return DependencyConfig(
name: name.trim(),
version: (ver != null && ver.isNotEmpty) ? ver : null,
isDevDependency: isDevDependency,
);
} else if (entry.isNotEmpty) {
// e.g. { dio: "^5.4.0" } or { dio: null }
final key = entry.keys.first.toString().trim();
final rawVal = entry.values.first;
final ver = (rawVal != null && rawVal.toString().trim().isNotEmpty)
? rawVal.toString().trim()
: null;
return DependencyConfig(
name: key,
version: ver,
isDevDependency: isDevDependency,
);
}
}
throw FormatException('Invalid dependency format: $entry');
}