rgit/src/data.rs

27 lines
585 B
Rust
Raw Normal View History

2020-09-29 01:04:28 +02:00
use sha1::{Digest, Sha1};
2020-09-27 14:52:54 +02:00
use std::fs;
2020-09-29 01:04:28 +02:00
use std::str;
2020-09-27 14:52:54 +02:00
static RGIT_DIR: &'static str = ".rgit";
pub fn init() -> std::io::Result<()> {
fs::create_dir(RGIT_DIR)?;
2020-09-29 01:04:28 +02:00
fs::create_dir(format!("{}/{}", RGIT_DIR, "objects"))?;
2020-09-27 14:52:54 +02:00
Ok(())
}
2020-09-29 01:04:28 +02:00
pub fn hash_object(content: &Vec<u8>) -> String {
let mut hasher = Sha1::new();
hasher.update(content);
let digest = &hasher.finalize();
let s = format!("{:x}", digest);
fs::write(
format!("{}/{}/{}", RGIT_DIR, "objects", s),
content.as_slice(),
)
.expect("Failed to write object");
return s;
}