summaryrefslogtreecommitdiffstats
path: root/src/filestore/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/filestore/util.rs')
-rw-r--r--src/filestore/util.rs17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/filestore/util.rs b/src/filestore/util.rs
index 4e0b85c..c32dd5d 100644
--- a/src/filestore/util.rs
+++ b/src/filestore/util.rs
@@ -3,7 +3,6 @@
use std::collections::BTreeMap;
use std::path::Path;
-use std::path::PathBuf;
use anyhow::Error;
use anyhow::Result;
@@ -24,7 +23,7 @@ use crate::filestore::path::*;
/// It can then be wrapped into the actual interface of this module with specialized functionality.
pub struct FileStoreImpl {
pub(in crate::filestore) root: StoreRoot,
- store: BTreeMap<PathBuf, Artifact>,
+ store: BTreeMap<ArtifactPath, Artifact>,
}
impl FileStoreImpl {
@@ -41,9 +40,9 @@ impl FileStoreImpl {
.and_then_ok(|f| {
progress.tick();
let p = root.stripped_from(f.path())?;
- Artifact::load(&root, p).map(|a| (f.path().to_path_buf(), a))
+ Artifact::load(&root, p.clone()).map(|a| (p, a))
})
- .collect::<Result<BTreeMap<PathBuf, Artifact>>>()?;
+ .collect::<Result<BTreeMap<ArtifactPath, Artifact>>>()?;
Ok(FileStoreImpl { root, store })
} else {
@@ -63,15 +62,15 @@ impl FileStoreImpl {
self.store.values()
}
- pub (in crate::filestore) fn load_from_path(&mut self, pb: &Path) -> Result<&Artifact> {
- if !self.is_sub_path(pb)? {
+ pub (in crate::filestore) fn load_from_path(&mut self, pb: &FullArtifactPath) -> Result<&Artifact> {
+ if !self.is_sub_path(pb.as_path())? {
Err(anyhow!("Not a sub-path of {}: {}", self.root.display(), pb.display()))
} else {
- if self.store.get(pb).is_some() {
+ let art_path = self.root.stripped_from(pb.as_path())?;
+ if self.store.get(&art_path).is_some() {
Err(anyhow!("Entry exists: {}", pb.display()))
} else {
- let p = self.root.stripped_from(pb)?;
- Ok(self.store.entry(pb.to_path_buf()).or_insert(Artifact::load(&self.root, p)?))
+ Ok(self.store.entry(art_path.clone()).or_insert(Artifact::load(&self.root, art_path)?))
}
}
}