applyDiffToFile function
Apply a diff to a file.
Implementation
Future<EditResult> applyDiffToFile(
String filePath,
String diff, {
bool createBackup = true,
}) async {
final file = File(filePath);
if (!await file.exists()) {
return EditResult(
success: false,
newContent: '',
editsApplied: 0,
errors: ['File not found: $filePath'],
);
}
final content = await file.readAsString();
String? backupPath;
if (createBackup) {
backupPath = '$filePath.bak.${DateTime.now().millisecondsSinceEpoch}';
await File(backupPath).writeAsString(content);
}
try {
final newContent = applyDiff(content, diff);
await file.writeAsString(newContent);
final hunks = parseUnifiedDiff(diff);
return EditResult(
success: true,
newContent: newContent,
editsApplied: hunks.length,
backupPath: backupPath,
);
} catch (e) {
return EditResult(
success: false,
newContent: content,
editsApplied: 0,
errors: ['Failed to apply diff: $e'],
backupPath: backupPath,
);
}
}