From a8cf3b2757dee028e86f7cc6848b741c46dd933a Mon Sep 17 00:00:00 2001 From: Rosyid Haryadi Date: Tue, 18 Mar 2025 15:32:50 +0700 Subject: upd: implementing cat-file & add readme --- src/repository.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/repository.rs') diff --git a/src/repository.rs b/src/repository.rs index f5ecffb..97b7816 100644 --- a/src/repository.rs +++ b/src/repository.rs @@ -5,6 +5,7 @@ use ini::ini; use std::collections::HashMap; use std::io::Write; use std::path::PathBuf; +use crate::object::{GitCommit, GitObject, GitObjectType}; pub struct GitRepository { pub worktree: PathBuf, @@ -70,4 +71,16 @@ impl GitRepository { } println!("Git repository initialized in {}", repo.worktree.display()); } + + pub fn cat_file(&self, object_type: GitObjectType, sha: &str) { + match object_type { + GitObjectType::Commit => { + let path = self.gitdir.join(&sha[..2]).join(&sha[2..]); + let git_object = GitObject::from_file(path); + let git_commit = GitCommit::from_git_object(git_object); + println!("{}", git_commit); + } + _ => {} + } + } } \ No newline at end of file -- cgit v1.2.3-70-g09d2