diff options
-rw-r--r-- | src/repository/fs.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/repository/fs.rs b/src/repository/fs.rs index 3b7972f..3fe6cd4 100644 --- a/src/repository/fs.rs +++ b/src/repository/fs.rs @@ -60,6 +60,12 @@ impl TryFrom<&std::path::Component<'_>> for PathComponent { } } +impl PathComponent { + fn is_pkg_toml(&self) -> bool { + std::matches!(self, PathComponent::PkgToml) + } +} + impl FileSystemRepresentation { pub fn load(root: PathBuf) -> Result<Self> { @@ -149,6 +155,12 @@ impl FileSystemRepresentation { for elem in path.components() { let elem = PathComponent::try_from(&elem)?; + if !elem.is_pkg_toml() { + if let Some(Element::File(intermediate)) = curr_hm.get(&PathComponent::PkgToml) { + res.push(intermediate); + } + } + match curr_hm.get(&elem) { Some(Element::File(cont)) => res.push(cont), Some(Element::Dir(hm)) => curr_hm = hm, |