groupDependencies method

Future<GroupedDependencies> groupDependencies(
  1. List<DependencyInfo> dependencies
)

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,
  );
}