refactor(core): simplify edit file diffs
This commit is contained in:
parent
ff58d21b22
commit
ddfcdee425
1 changed files with 18 additions and 27 deletions
|
|
@ -185,18 +185,7 @@ export const Plugin = {
|
||||||
)
|
)
|
||||||
const preview =
|
const preview =
|
||||||
replacements > 0 && (replacements === 1 || input.replaceAll === true)
|
replacements > 0 && (replacements === 1 || input.replaceAll === true)
|
||||||
? {
|
? fileDiff(target.resource, source, replaced)
|
||||||
file: target.resource,
|
|
||||||
patch: createTwoFilesPatch(target.resource, target.resource, source, replaced),
|
|
||||||
status: "modified" as const,
|
|
||||||
...diffLines(source, replaced).reduce(
|
|
||||||
(result, item) => ({
|
|
||||||
additions: result.additions + (item.added ? (item.count ?? 0) : 0),
|
|
||||||
deletions: result.deletions + (item.removed ? (item.count ?? 0) : 0),
|
|
||||||
}),
|
|
||||||
{ additions: 0, deletions: 0 },
|
|
||||||
),
|
|
||||||
}
|
|
||||||
: undefined
|
: undefined
|
||||||
yield* permission.assert({
|
yield* permission.assert({
|
||||||
action: "edit",
|
action: "edit",
|
||||||
|
|
@ -226,22 +215,8 @@ export const Plugin = {
|
||||||
const formatted = (yield* formatter.file(target.canonical))
|
const formatted = (yield* formatter.file(target.canonical))
|
||||||
? yield* Bom.syncFile(fs, target.canonical, bom)
|
? yield* Bom.syncFile(fs, target.canonical, bom)
|
||||||
: (yield* Bom.readFile(fs, target.canonical)).text
|
: (yield* Bom.readFile(fs, target.canonical)).text
|
||||||
const counts = diffLines(source, formatted).reduce(
|
|
||||||
(result, item) => ({
|
|
||||||
additions: result.additions + (item.added ? (item.count ?? 0) : 0),
|
|
||||||
deletions: result.deletions + (item.removed ? (item.count ?? 0) : 0),
|
|
||||||
}),
|
|
||||||
{ additions: 0, deletions: 0 },
|
|
||||||
)
|
|
||||||
return {
|
return {
|
||||||
files: [
|
files: [fileDiff(result.resource, source, formatted)],
|
||||||
{
|
|
||||||
file: result.resource,
|
|
||||||
patch: createTwoFilesPatch(result.resource, result.resource, source, formatted),
|
|
||||||
status: "modified" as const,
|
|
||||||
...counts,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
replacements,
|
replacements,
|
||||||
} satisfies Output
|
} satisfies Output
|
||||||
}).pipe(
|
}).pipe(
|
||||||
|
|
@ -263,3 +238,19 @@ export const Plugin = {
|
||||||
.pipe(Effect.orDie)
|
.pipe(Effect.orDie)
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fileDiff(file: string, before: string, after: string): typeof FileDiff.Info.Type {
|
||||||
|
const counts = diffLines(before, after).reduce(
|
||||||
|
(result, item) => ({
|
||||||
|
additions: result.additions + (item.added ? (item.count ?? 0) : 0),
|
||||||
|
deletions: result.deletions + (item.removed ? (item.count ?? 0) : 0),
|
||||||
|
}),
|
||||||
|
{ additions: 0, deletions: 0 },
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
file,
|
||||||
|
patch: createTwoFilesPatch(file, file, before, after),
|
||||||
|
status: "modified",
|
||||||
|
...counts,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue