diff options
author | HampusM <hampus@hampusmat.com> | 2021-07-26 17:33:54 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2021-07-26 17:33:54 +0200 |
commit | a737bc4695f99b05a3c4807c88fc30b1a1eb89b5 (patch) | |
tree | 4ca8f9955a80a09a508c55f86daeb2aba2ae64ac /packages/server/src/git/blob.ts | |
parent | 35151a0283141ddac96f8cc71b59cd1030e31f3d (diff) |
Refactored the git tree, tree entry & blob classes
Diffstat (limited to 'packages/server/src/git/blob.ts')
-rw-r--r-- | packages/server/src/git/blob.ts | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/packages/server/src/git/blob.ts b/packages/server/src/git/blob.ts index e44a979..ef9f9ab 100644 --- a/packages/server/src/git/blob.ts +++ b/packages/server/src/git/blob.ts @@ -1,17 +1,29 @@ -import { TreeEntry as NodeGitTreeEntry } from "nodegit"; import { BlobError, createError } from "./error"; +import { Tree } from "./tree"; +import { BlobTreeEntry } from "./tree_entry"; export class Blob { - private _ng_tree_entry: NodeGitTreeEntry; + private _tree_entry: BlobTreeEntry; - constructor(entry: NodeGitTreeEntry) { - this._ng_tree_entry = entry; + public path; + + constructor(entry: BlobTreeEntry, path: string) { + this._tree_entry = entry; + + this.path = path; } public async content(): Promise<string> { - if(!this._ng_tree_entry.isBlob()) { + return this._tree_entry.content(); + } + + public static async fromPath(tree: Tree, path: string): Promise<Blob> { + const entry = await tree.find(path); + + if(!(entry instanceof BlobTreeEntry)) { throw(createError(BlobError, 500, "Not a blob")); } - return this._ng_tree_entry.isBlob() ? (await this._ng_tree_entry.getBlob()).toString() : ""; + + return new Blob(entry, path); } }
\ No newline at end of file |