28 lines
638 B
TypeScript
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),
|
|
}
|
|
}
|