addDependenciesEfficiently function

Future<void> addDependenciesEfficiently(
  1. List<String> packages, {
  2. required bool isDev,
})

Implementation

Future<void> addDependenciesEfficiently(
  List<String> packages, {
  required bool isDev,
}) async {
  if (packages.isEmpty) return;

  final sectionName = isDev ? 'dev_dependencies' : 'dependencies';

  final args = ['pub', 'add'];
  if (isDev) {
    args.add('--dev');
  }
  args.addAll(packages);

  Logger.info(
    "⚙️ Resolving and adding ${packages.length} packages to $sectionName...",
  );

  // Adding runInShell: true is the key to perfect Windows OS support
  final result = await Process.run('dart', args, runInShell: true);

  if (result.exitCode == 0) {
    Logger.success("✅ Successfully added packages to $sectionName");
  } else {
    throw Exception(
      "❌ Failed to add packages to $sectionName:\n${result.stderr}",
    );
  }
}