applyChanges static method

Future<bool> applyChanges(
  1. List<DependencyChange> changes
)

Apply dependency changes to pubspec.yaml while preserving structure

Implementation

static Future<bool> applyChanges(List<DependencyChange> changes) async {
  try {
    final pubspecData = await readPubspec();
    final lines = pubspecData.originalContent.split('\n');

    // Find dependency sections
    final dependenciesSection = _findSection(lines, AnalysisConfig.dependenciesSection);
    final devDependenciesSection = _findSection(lines, AnalysisConfig.devDependenciesSection);

    // Apply changes
    for (final change in changes) {
      switch (change.action) {
        case ChangeAction.remove:
          _removeDependency(lines, change.packageName, dependenciesSection, devDependenciesSection);
          break;
        case ChangeAction.moveToDevDependencies:
          _moveDependency(lines, change.packageName, dependenciesSection, devDependenciesSection);
          break;
        case ChangeAction.moveToDependencies:
          _moveDependency(lines, change.packageName, devDependenciesSection, dependenciesSection);
          break;
        case ChangeAction.removeFromDependencies:
          if (dependenciesSection != null) {
            _removeDependencyFromSection(lines, change.packageName, dependenciesSection);
          }
          break;
        case ChangeAction.removeFromDevDependencies:
          if (devDependenciesSection != null) {
            _removeDependencyFromSection(lines, change.packageName, devDependenciesSection);
          }
          break;
      }
    }

    // Write updated content
    final updatedContent = lines.join('\n');
    final file = File(FileConfig.pubspecFile);
    await file.writeAsString(updatedContent);

    return true;
  } catch (e) {
    return false;
  }
}