From 4b89bb087ab561e54a7473786fbe6064cc1da1c6 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Wed, 4 Dec 2019 11:38:28 -0800 Subject: [PATCH] Attach context to instances produced by middleware (#273) --- src/snapshot_middleware/dir.rs | 3 ++- src/snapshot_middleware/json_model.rs | 9 ++++++--- src/snapshot_middleware/lua.rs | 13 +++++++++---- src/snapshot_middleware/rbxlx.rs | 5 +++-- src/snapshot_middleware/rbxm.rs | 5 +++-- src/snapshot_middleware/rbxmx.rs | 5 +++-- src/snapshot_middleware/txt.rs | 5 +++-- 7 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/snapshot_middleware/dir.rs b/src/snapshot_middleware/dir.rs index 9c64efdf..4bfafc38 100644 --- a/src/snapshot_middleware/dir.rs +++ b/src/snapshot_middleware/dir.rs @@ -64,7 +64,8 @@ impl SnapshotMiddleware for SnapshotDir { .metadata( InstanceMetadata::new() .instigating_source(entry.path()) - .relevant_paths(relevant_paths), + .relevant_paths(relevant_paths) + .context(context), ); if let Some(meta_entry) = vfs.get(meta_path).with_not_found()? { diff --git a/src/snapshot_middleware/json_model.rs b/src/snapshot_middleware/json_model.rs index f5aa7068..bff856ed 100644 --- a/src/snapshot_middleware/json_model.rs +++ b/src/snapshot_middleware/json_model.rs @@ -18,7 +18,7 @@ pub struct SnapshotJsonModel; impl SnapshotMiddleware for SnapshotJsonModel { fn from_vfs( - _context: &InstanceContext, + context: &InstanceContext, vfs: &Vfs, entry: &VfsEntry, ) -> SnapshotInstanceResult { @@ -54,8 +54,11 @@ impl SnapshotMiddleware for SnapshotJsonModel { let mut snapshot = instance.core.into_snapshot(instance_name.to_owned()); - snapshot.metadata.instigating_source = Some(entry.path().to_path_buf().into()); - snapshot.metadata.relevant_paths = vec![entry.path().to_path_buf()]; + snapshot.metadata = snapshot + .metadata + .instigating_source(entry.path()) + .relevant_paths(vec![entry.path().to_path_buf()]) + .context(context); Ok(Some(snapshot)) } diff --git a/src/snapshot_middleware/lua.rs b/src/snapshot_middleware/lua.rs index b8b869da..c8ac072d 100644 --- a/src/snapshot_middleware/lua.rs +++ b/src/snapshot_middleware/lua.rs @@ -33,7 +33,7 @@ impl SnapshotMiddleware for SnapshotLua { } if entry.is_file() { - snapshot_lua_file(vfs, entry) + snapshot_lua_file(context, vfs, entry) } else { // At this point, our entry is definitely a directory! @@ -54,7 +54,11 @@ impl SnapshotMiddleware for SnapshotLua { } /// Core routine for turning Lua files into snapshots. -fn snapshot_lua_file(vfs: &Vfs, entry: &VfsEntry) -> SnapshotInstanceResult { +fn snapshot_lua_file( + context: &InstanceContext, + vfs: &Vfs, + entry: &VfsEntry, +) -> SnapshotInstanceResult { let file_name = entry.path().file_name().unwrap().to_string_lossy(); let (class_name, instance_name) = if let Some(name) = match_trailing(&file_name, ".server.lua") @@ -89,7 +93,8 @@ fn snapshot_lua_file(vfs: &Vfs, entry: &VfsEntry) -> SnapshotI .metadata( InstanceMetadata::new() .instigating_source(entry.path()) - .relevant_paths(vec![entry.path().to_path_buf(), meta_path.clone()]), + .relevant_paths(vec![entry.path().to_path_buf(), meta_path.clone()]) + .context(context), ); if let Some(meta_entry) = vfs.get(meta_path).with_not_found()? { @@ -116,7 +121,7 @@ fn snapshot_init( if let Some(init_entry) = vfs.get(init_path).with_not_found()? { if let Some(dir_snapshot) = SnapshotDir::from_vfs(context, vfs, folder_entry)? { - if let Some(mut init_snapshot) = snapshot_lua_file(vfs, &init_entry)? { + if let Some(mut init_snapshot) = snapshot_lua_file(context, vfs, &init_entry)? { if dir_snapshot.class_name != "Folder" { panic!( "init.lua, init.server.lua, and init.client.lua can \ diff --git a/src/snapshot_middleware/rbxlx.rs b/src/snapshot_middleware/rbxlx.rs index fadbf3c9..0f7df5b1 100644 --- a/src/snapshot_middleware/rbxlx.rs +++ b/src/snapshot_middleware/rbxlx.rs @@ -12,7 +12,7 @@ pub struct SnapshotRbxlx; impl SnapshotMiddleware for SnapshotRbxlx { fn from_vfs( - _context: &InstanceContext, + context: &InstanceContext, vfs: &Vfs, entry: &VfsEntry, ) -> SnapshotInstanceResult { @@ -38,7 +38,8 @@ impl SnapshotMiddleware for SnapshotRbxlx { .metadata( InstanceMetadata::new() .instigating_source(entry.path()) - .relevant_paths(vec![entry.path().to_path_buf()]), + .relevant_paths(vec![entry.path().to_path_buf()]) + .context(context), ); Ok(Some(snapshot)) diff --git a/src/snapshot_middleware/rbxm.rs b/src/snapshot_middleware/rbxm.rs index 4a4d2fc6..14f4c11c 100644 --- a/src/snapshot_middleware/rbxm.rs +++ b/src/snapshot_middleware/rbxm.rs @@ -16,7 +16,7 @@ pub struct SnapshotRbxm; impl SnapshotMiddleware for SnapshotRbxm { fn from_vfs( - _context: &InstanceContext, + context: &InstanceContext, vfs: &Vfs, entry: &VfsEntry, ) -> SnapshotInstanceResult { @@ -48,7 +48,8 @@ impl SnapshotMiddleware for SnapshotRbxm { .metadata( InstanceMetadata::new() .instigating_source(entry.path()) - .relevant_paths(vec![entry.path().to_path_buf()]), + .relevant_paths(vec![entry.path().to_path_buf()]) + .context(context), ); Ok(Some(snapshot)) diff --git a/src/snapshot_middleware/rbxmx.rs b/src/snapshot_middleware/rbxmx.rs index b8c33902..91b9ef0c 100644 --- a/src/snapshot_middleware/rbxmx.rs +++ b/src/snapshot_middleware/rbxmx.rs @@ -12,7 +12,7 @@ pub struct SnapshotRbxmx; impl SnapshotMiddleware for SnapshotRbxmx { fn from_vfs( - _context: &InstanceContext, + context: &InstanceContext, vfs: &Vfs, entry: &VfsEntry, ) -> SnapshotInstanceResult { @@ -40,7 +40,8 @@ impl SnapshotMiddleware for SnapshotRbxmx { .metadata( InstanceMetadata::new() .instigating_source(entry.path()) - .relevant_paths(vec![entry.path().to_path_buf()]), + .relevant_paths(vec![entry.path().to_path_buf()]) + .context(context), ); Ok(Some(snapshot)) diff --git a/src/snapshot_middleware/txt.rs b/src/snapshot_middleware/txt.rs index c463564b..b0307da0 100644 --- a/src/snapshot_middleware/txt.rs +++ b/src/snapshot_middleware/txt.rs @@ -19,7 +19,7 @@ pub struct SnapshotTxt; impl SnapshotMiddleware for SnapshotTxt { fn from_vfs( - _context: &InstanceContext, + context: &InstanceContext, vfs: &Vfs, entry: &VfsEntry, ) -> SnapshotInstanceResult { @@ -54,7 +54,8 @@ impl SnapshotMiddleware for SnapshotTxt { .metadata( InstanceMetadata::new() .instigating_source(entry.path()) - .relevant_paths(vec![entry.path().to_path_buf(), meta_path.clone()]), + .relevant_paths(vec![entry.path().to_path_buf(), meta_path.clone()]) + .context(context), ); if let Some(meta_entry) = vfs.get(meta_path).with_not_found()? {