diff --git a/src/pointers.ts b/src/pointers.ts index 4c7363d..b07c8d0 100644 --- a/src/pointers.ts +++ b/src/pointers.ts @@ -20,14 +20,8 @@ function isValidPointerInfo(val: Record): val is PointerInfo { return val.oid.trim !== undefined && typeof val.size === 'number'; } -interface PointerRequest { - dir: string; - gitdir?: string; - content: Buffer; -} - -export function readPointer({ dir, gitdir = path.join(dir, '.git'), content }: PointerRequest): Pointer { +function readPointerInfo(content: Buffer): PointerInfo { const info = content.toString().trim().split('\n').reduce((accum, line) => { const [k, v] = line.split(' ', 2); if (k === 'oid') { @@ -39,17 +33,28 @@ export function readPointer({ dir, gitdir = path.join(dir, '.git'), content }: P }, {} as Record); if (isValidPointerInfo(info)) { - const objectPath = path.join( - gitdir, - 'lfs', - 'objects', - info.oid.substr(0, 2), - info.oid.substr(2, 2), - info.oid); - - return { info, objectPath }; - + return info; } else { throw new Error("LFS pointer is incomplete or cannot be read"); } } + + +interface PointerRequest { + dir: string; + gitdir?: string; + content: Buffer; +} +export function readPointer({ dir, gitdir = path.join(dir, '.git'), content }: PointerRequest): Pointer { + const info = readPointerInfo(content); + + const objectPath = path.join( + gitdir, + 'lfs', + 'objects', + info.oid.substr(0, 2), + info.oid.substr(2, 2), + info.oid); + + return { info, objectPath }; +}