From 187194a615ceeee4721dad27ffa2c19e3b3b7ac8 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Fri, 20 Apr 2018 23:13:43 -0700 Subject: [PATCH] Keep track of actual file name in VfsItem. This should fix the case of a partition pointed directly at a file turning the object into a `StringValue`. Fixes #57. --- CHANGES.md | 1 + server/src/vfs/vfs_item.rs | 7 ++++++- server/src/vfs/vfs_session.rs | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) 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, }) }