groupDependencies method
Group dependencies by categories
Implementation
Future<GroupedDependencies> groupDependencies(
List<DependencyInfo> dependencies,
) async {
final grouped = <String, List<DependencyInfo>>{};
final categoryOrder = <String>[];
for (final dep in dependencies) {
String category;
// Check for local override first
if (groupOverrides != null && groupOverrides!.containsKey(dep.name)) {
category = groupOverrides![dep.name]!;
} else {
category = await gemsIntegration.classifyPackage(dep.name);
}
// Add to grouped map
if (!grouped.containsKey(category)) {
grouped[category] = <DependencyInfo>[];
categoryOrder.add(category);
}
grouped[category]!.add(dep);
}
// Sort packages within each category alphabetically
for (final categoryDeps in grouped.values) {
categoryDeps.sort((a, b) => a.name.compareTo(b.name));
}
// Sort categories by priority
categoryOrder.sort(_compareCategoryPriority);
return GroupedDependencies(
grouped: grouped,
categoryOrder: categoryOrder,
);
}