summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2025-03-16 02:34:56 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2025-03-16 02:34:56 +0700
commit3e8903a54667f24dd8e7f1b74d97ee772c032e64 (patch)
tree6206852a6d8f89e114ff294ab5252273ebee358e
parent63fe218d4ea0d52f92af4bde33d96ba3804b50aa (diff)
upd: git object & refactor: core -> repository
-rw-r--r--src/main.rs5
-rw-r--r--src/object.rs12
-rw-r--r--src/repository.rs (renamed from src/core.rs)2
-rw-r--r--src/utilities.rs2
4 files changed, 17 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 8958192..a1c911c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,9 +1,10 @@
-mod core;
+mod repository;
mod utilities;
+mod object;
use std::path::PathBuf;
use clap::{Parser, Subcommand};
-use crate::core::GitRepository;
+use crate::repository::GitRepository;
#[derive(Parser)]
#[command(version, about, long_about = None)]
diff --git a/src/object.rs b/src/object.rs
new file mode 100644
index 0000000..6374911
--- /dev/null
+++ b/src/object.rs
@@ -0,0 +1,12 @@
+enum GitObjectType {
+ Blob,
+ Commit,
+ Tag,
+ Tree,
+}
+
+struct GitObject {
+ object_type: GitObjectType,
+ size: usize,
+ data: Vec<u8>,
+} \ No newline at end of file
diff --git a/src/core.rs b/src/repository.rs
index 0b7065f..6816d74 100644
--- a/src/core.rs
+++ b/src/repository.rs
@@ -54,7 +54,7 @@ impl GitRepository {
create_path_or_die!(dir: repo.gitdir.clone().join("refs"), "Failed to create refs directory");
create_path_or_die!(dir: repo.gitdir.clone().join("refs").join("heads"), "Failed to create git refs/head directory");
create_path_or_die!(dir: repo.gitdir.clone().join("refs").join("tags"), "Failed to create git refs/tags directory");
- create_path_or_die!(file: repo.gitdir.clone().join("HEAD"), &"ref: refs/heads/master\n", "Failed to write HEAD file");
+ create_path_or_die!(file: repo.gitdir.clone().join("HEAD"), "ref: refs/heads/master\n", "Failed to write HEAD file");
create_path_or_die!(
file: repo.gitdir.clone().join("HEAD"),
"ref: refs/heads/master\n",
diff --git a/src/utilities.rs b/src/utilities.rs
index 1357cdf..bc78495 100644
--- a/src/utilities.rs
+++ b/src/utilities.rs
@@ -21,7 +21,7 @@ macro_rules! create_path_or_die {
(file: $path:expr, $content:expr, $message:expr) => {
if let Ok(mut file) = std::fs::File::create($path) {
- if let Err(e) = file.write_all($content.as_ref()) {
+ if let Err(e) = write!(file, $content) {
die!(format!("{}\nError: {}", $message, e.to_string()));
}
} else {