Files
oh-my-opencode/src/shared/git-worktree/parse-status-porcelain-line.ts
T

28 lines
638 B
TypeScript

import type { GitFileStatus } from "./types"
export interface ParsedGitStatusPorcelainLine {
filePath: string
status: GitFileStatus
}
function toGitFileStatus(statusToken: string): GitFileStatus {
if (statusToken === "A" || statusToken === "??") return "added"
if (statusToken === "D") return "deleted"
return "modified"
}
export function parseGitStatusPorcelainLine(
line: string,
): ParsedGitStatusPorcelainLine | null {
if (!line) return null
const statusToken = line.substring(0, 2).trim()
const filePath = line.substring(3)
if (!filePath) return null
return {
filePath,
status: toGitFileStatus(statusToken),
}
}