diff --git a/src/shared/git-worktree/index.ts b/src/shared/git-worktree/index.ts index 0bc363d0..ff084ca8 100644 --- a/src/shared/git-worktree/index.ts +++ b/src/shared/git-worktree/index.ts @@ -1,4 +1,6 @@ export type { GitFileStatus, GitFileStat } from "./types" +export type { ParsedGitStatusPorcelainLine } from "./parse-status-porcelain-line" +export { parseGitStatusPorcelainLine } from "./parse-status-porcelain-line" export { parseGitStatusPorcelain } from "./parse-status-porcelain" export { parseGitDiffNumstat } from "./parse-diff-numstat" export { collectGitDiffStats } from "./collect-git-diff-stats" diff --git a/src/shared/git-worktree/parse-status-porcelain.ts b/src/shared/git-worktree/parse-status-porcelain.ts index 0623de5d..47a008cb 100644 --- a/src/shared/git-worktree/parse-status-porcelain.ts +++ b/src/shared/git-worktree/parse-status-porcelain.ts @@ -1,24 +1,14 @@ import type { GitFileStatus } from "./types" +import { parseGitStatusPorcelainLine } from "./parse-status-porcelain-line" export function parseGitStatusPorcelain(output: string): Map { const map = new Map() if (!output) return map for (const line of output.split("\n")) { - if (!line) continue - - const status = line.substring(0, 2).trim() - const filePath = line.substring(3) - - if (!filePath) continue - - if (status === "A" || status === "??") { - map.set(filePath, "added") - } else if (status === "D") { - map.set(filePath, "deleted") - } else { - map.set(filePath, "modified") - } + const parsed = parseGitStatusPorcelainLine(line) + if (!parsed) continue + map.set(parsed.filePath, parsed.status) } return map