mirror of
https://github.com/MrBeanCpp/MIT.git
synced 2026-04-10 14:20:02 +08:00
check storage
This commit is contained in:
@@ -1,11 +1,52 @@
|
||||
use sha1::{
|
||||
Digest,
|
||||
Sha1
|
||||
};
|
||||
use sha1::{Digest, Sha1};
|
||||
|
||||
pub fn calc_hash(data: &String) -> String {
|
||||
let mut hasher = Sha1::new();
|
||||
hasher.update(data);
|
||||
let hash = hasher.finalize();
|
||||
hex::encode(hash)
|
||||
}
|
||||
|
||||
pub fn storage_exist() -> bool {
|
||||
/*检查是否存在储存库 */
|
||||
let rt = get_storage_path();
|
||||
match rt {
|
||||
Ok(_) => true,
|
||||
Err(_) => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_storage_path() -> Result<String, std::io::Error> {
|
||||
/*递归获取储存库 */
|
||||
let mut current_dir = std::env::current_dir()?;
|
||||
loop {
|
||||
let mut git_path = current_dir.clone();
|
||||
git_path.push(".mit");
|
||||
if git_path.exists() {
|
||||
return Ok(git_path.to_str().unwrap().to_string());
|
||||
}
|
||||
if !current_dir.pop() {
|
||||
return Err(std::io::Error::new(
|
||||
std::io::ErrorKind::NotFound,
|
||||
"Not a git repository",
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_get_storage_path() {
|
||||
let path = get_storage_path();
|
||||
match path {
|
||||
Ok(path) => println!("{}", path),
|
||||
Err(err) => match err.kind() {
|
||||
std::io::ErrorKind::NotFound => println!("Not a git repository"),
|
||||
_ => assert!(false, "Unexpected error"),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user