diff --git a/CHANGES.md b/CHANGES.md index 5d447311..a00a25c1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ ## Current Master * Rojo now throws an error if no project file is found. ([#63](https://github.com/LPGhatguy/rojo/issues/63)) * Fixed multiple sync operations occuring at the same time. ([#61](https://github.com/LPGhatguy/rojo/issues/61)) +* Partitions targeting files directly now work as expected. ([#57](https://github.com/LPGhatguy/rojo/issues/57)) ## 0.4.4 (April 7, 2018) * Fix small regression introduced in 0.4.3 diff --git a/server/src/vfs/vfs_item.rs b/server/src/vfs/vfs_item.rs index ae00c6dc..89fd2608 100644 --- a/server/src/vfs/vfs_item.rs +++ b/server/src/vfs/vfs_item.rs @@ -9,17 +9,22 @@ use std::collections::HashMap; pub enum VfsItem { File { route: Vec, + file_name: String, contents: String, }, Dir { route: Vec, + file_name: String, children: HashMap, }, } impl VfsItem { pub fn name(&self) -> &String { - self.route().last().unwrap() + match self { + &VfsItem::File { ref file_name , .. } => file_name, + &VfsItem::Dir { ref file_name , .. } => file_name, + } } pub fn route(&self) -> &[String] { diff --git a/server/src/vfs/vfs_session.rs b/server/src/vfs/vfs_session.rs index efe86ea7..52945d0d 100644 --- a/server/src/vfs/vfs_session.rs +++ b/server/src/vfs/vfs_session.rs @@ -111,8 +111,11 @@ impl VfsSession { } } + let file_name = path.file_name().unwrap().to_string_lossy().into_owned(); + Ok(VfsItem::Dir { route: route.iter().cloned().collect::>(), + file_name, children, }) } @@ -131,8 +134,11 @@ impl VfsSession { Err(_) => return Err(()), } + let file_name = path.file_name().unwrap().to_string_lossy().into_owned(); + Ok(VfsItem::File { route: route.iter().cloned().collect::>(), + file_name, contents, }) }