mergeDependencies static method

void mergeDependencies(
  1. String targetPubspecPath,
  2. Map<String, dynamic> oldDeps
)

Implementation

static void mergeDependencies(String targetPubspecPath, Map<String, dynamic> oldDeps) {
  final file = File(targetPubspecPath);
  if (!file.existsSync()) {
    throw Exception('pubspec.yaml not found at $targetPubspecPath');
  }

  final content = file.readAsStringSync();
  final editor = YamlEditor(content);

  // Read current dependencies from file
  final currentYaml = loadYaml(content);
  Map<String, dynamic> currentDeps = currentYaml['dependencies'] != null
      ? Map<String, dynamic>.from(currentYaml['dependencies'])
      : {};
  Map<String, dynamic> currentDevDeps = currentYaml['dev_dependencies'] != null
      ? Map<String, dynamic>.from(currentYaml['dev_dependencies'])
      : {};

  // Merge oldDeps into current, existing keys are preserved
  currentDeps.addAll(oldDeps['dependencies'] ?? {});
  currentDevDeps.addAll(oldDeps['dev_dependencies'] ?? {});

  editor.update(['dependencies'], currentDeps);
  editor.update(['dev_dependencies'], currentDevDeps);

  file.writeAsStringSync(editor.toString());
}