summary refs log tree commit diff
path: root/ripple/fossil/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ripple/fossil/src/lib.rs')
-rw-r--r--ripple/fossil/src/lib.rs21
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;