diff --git a/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap b/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap index 0dcac5ac..189e935f 100644 --- a/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap +++ b/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap @@ -9,6 +9,7 @@ metadata: Path: /foo.txt relevant_paths: - /foo.txt + - /foo.meta.json name: foo class_name: StringValue properties: diff --git a/src/snapshot_middleware/snapshots/test__project_with_path_to_txt.snap b/src/snapshot_middleware/snapshots/test__project_with_path_to_txt.snap index de80caa4..a2151784 100644 --- a/src/snapshot_middleware/snapshots/test__project_with_path_to_txt.snap +++ b/src/snapshot_middleware/snapshots/test__project_with_path_to_txt.snap @@ -9,6 +9,7 @@ metadata: Path: /foo/default.project.json relevant_paths: - /foo/other.txt + - /foo/other.meta.json - /foo/default.project.json name: path-project class_name: StringValue diff --git a/src/snapshot_middleware/txt.rs b/src/snapshot_middleware/txt.rs index 19906ca9..f76e4e6d 100644 --- a/src/snapshot_middleware/txt.rs +++ b/src/snapshot_middleware/txt.rs @@ -4,11 +4,14 @@ use maplit::hashmap; use rbx_dom_weak::{RbxId, RbxTree, RbxValue}; use crate::{ - imfs::{FileSnapshot, Imfs, ImfsEntry, ImfsFetcher, ImfsSnapshot}, + imfs::{FileSnapshot, FsResultExt, Imfs, ImfsEntry, ImfsFetcher, ImfsSnapshot}, snapshot::{InstanceMetadata, InstanceSnapshot}, }; -use super::middleware::{SnapshotFileResult, SnapshotInstanceResult, SnapshotMiddleware}; +use super::{ + meta_file::AdjacentMetadata, + middleware::{SnapshotFileResult, SnapshotInstanceResult, SnapshotMiddleware}, +}; pub struct SnapshotTxt; @@ -49,18 +52,30 @@ impl SnapshotMiddleware for SnapshotTxt { }, }; - Ok(Some(InstanceSnapshot { + let meta_path = entry + .path() + .with_file_name(format!("{}.meta.json", instance_name)); + + let mut snapshot = InstanceSnapshot { snapshot_id: None, metadata: InstanceMetadata { instigating_source: Some(entry.path().to_path_buf().into()), - relevant_paths: vec![entry.path().to_path_buf()], + relevant_paths: vec![entry.path().to_path_buf(), meta_path.clone()], ..Default::default() }, name: Cow::Owned(instance_name), class_name: Cow::Borrowed("StringValue"), properties, children: Vec::new(), - })) + }; + + if let Some(meta_entry) = imfs.get(meta_path).with_not_found()? { + let meta_contents = meta_entry.contents(imfs)?; + let mut metadata = AdjacentMetadata::from_slice(meta_contents); + metadata.apply_all(&mut snapshot); + } + + Ok(Some(snapshot)) } fn from_instance(tree: &RbxTree, id: RbxId) -> SnapshotFileResult { diff --git a/src/snapshots/serve_session__change_txt_file_before.snap b/src/snapshots/serve_session__change_txt_file_before.snap index ee051327..644c3700 100644 --- a/src/snapshots/serve_session__change_txt_file_before.snap +++ b/src/snapshots/serve_session__change_txt_file_before.snap @@ -15,4 +15,5 @@ metadata: Path: /foo.txt relevant_paths: - /foo.txt + - /foo.meta.json children: [] diff --git a/src/snapshots/serve_session__project_with_folder.snap b/src/snapshots/serve_session__project_with_folder.snap index 6b91f347..ea3a0f33 100644 --- a/src/snapshots/serve_session__project_with_folder.snap +++ b/src/snapshots/serve_session__project_with_folder.snap @@ -27,4 +27,5 @@ children: Path: /foo/src/hello.txt relevant_paths: - /foo/src/hello.txt + - /foo/src/hello.meta.json children: []