applyChanges static method
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;
}
}