diff options
Diffstat (limited to 'ripple/fossil/src/lib.rs')
-rw-r--r-- | ripple/fossil/src/lib.rs | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/ripple/fossil/src/lib.rs b/ripple/fossil/src/lib.rs index aa4821c..ca474e3 100644 --- a/ripple/fossil/src/lib.rs +++ b/ripple/fossil/src/lib.rs @@ -74,8 +74,8 @@ impl Store { self.meta.flush().unwrap(); } - pub fn add_directory(&self, path: impl AsRef<Path>) -> Directory { - let (d, _) = self.add_directory_inner(path.as_ref()); + pub fn add_directory(&self, path: impl AsRef<Path>) -> DirectoryRef { + let d = self.add_directory_inner(path.as_ref()); self.flush(); d } @@ -86,7 +86,7 @@ impl Store { node } - fn add_directory_inner(&self, path: &Path) -> (Directory, u32) { + fn add_directory_inner(&self, path: &Path) -> DirectoryRef { let mut d = Directory::new(); let mut size: u32 = 0; @@ -99,22 +99,17 @@ impl Store { d.children.insert(name, child); } - (d, size) + let blob = d.into_pb().encode_to_vec(); + let ident = self.write_blob(&blob); + + DirectoryRef { ident, size } } fn add_path_inner(&self, path: &Path) -> Node { let meta = fs::symlink_metadata(path).unwrap(); match meta.file_type() { - ty if ty.is_dir() => { - let (d, size) = self.add_directory_inner(path); - let blob = d.into_pb().encode_to_vec(); - - Node::Directory(DirectoryRef { - ident: self.write_blob(&blob), - size, - }) - } + ty if ty.is_dir() => Node::Directory(self.add_directory_inner(path)), ty if ty.is_file() => { let executable = (meta.permissions().mode() & 0o100) != 0; |