diff options
author | edef <edef@unfathomable.blue> | 2022-05-03 15:49:43 +0000 |
---|---|---|
committer | edef <edef@unfathomable.blue> | 2022-05-03 16:06:36 +0000 |
commit | 2625ed645c93b708342f9fcc25f2a30e635613c1 (patch) | |
tree | 31c427f119e8ed1bfcd2069f5280acd0f36a2b9d /ripple/fossil/src/lib.rs | |
parent | fdf83f8681bb3531f6441f9d0a021ca9dcd36c45 (diff) | |
download | unf-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.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; |