From b02721463ecf7f42b4890a85b4f5aecbb1b6f120 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Tue, 17 Feb 2026 03:29:10 +0900 Subject: [PATCH] refactor: route status porcelain map parsing through line parser --- src/shared/git-worktree/index.ts | 2 ++ .../git-worktree/parse-status-porcelain.ts | 18 ++++-------------- 2 files changed, 6 insertions(+), 14 deletions(-) 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