18 lines
650 B
TypeScript
18 lines
650 B
TypeScript
import { parsePatch } from "diff"
|
|
|
|
export function getRevertDiffFiles(diffText: string) {
|
|
if (!diffText) return []
|
|
|
|
try {
|
|
return parsePatch(diffText).map((patch) => {
|
|
const filename = [patch.newFileName, patch.oldFileName].find((item) => item && item !== "/dev/null") ?? "unknown"
|
|
return {
|
|
filename: filename.replace(/^[ab]\//, ""),
|
|
additions: patch.hunks.reduce((sum, hunk) => sum + hunk.lines.filter((line) => line.startsWith("+")).length, 0),
|
|
deletions: patch.hunks.reduce((sum, hunk) => sum + hunk.lines.filter((line) => line.startsWith("-")).length, 0),
|
|
}
|
|
})
|
|
} catch {
|
|
return []
|
|
}
|
|
}
|