summary refs log tree commit diff
path: root/ripple/fossil/src/lib.rs
diff options
context:
space:
mode:
authoredef <edef@unfathomable.blue>2022-05-03 15:49:43 +0000
committeredef <edef@unfathomable.blue>2022-05-03 16:06:36 +0000
commit2625ed645c93b708342f9fcc25f2a30e635613c1 (patch)
tree31c427f119e8ed1bfcd2069f5280acd0f36a2b9d /ripple/fossil/src/lib.rs
parentfdf83f8681bb3531f6441f9d0a021ca9dcd36c45 (diff)
downloadunf-legacy-2625ed645c93b708342f9fcc25f2a30e635613c1.tar.zst
ripple/fossil: don't expose protobufs in the frontend
Previously, the CLI took Directory protobufs as input or wrote them as
output. Now we just deal in store hashes.

Change-Id: I5e0f0f33929ede43d971080c33bdb865f1832b2e
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;