Make InstanceSnapshotContext mutable through whole middleware pipeline

This commit is contained in:
Lucien Greathouse
2019-10-10 14:07:10 -07:00
parent f0cd4333c3
commit f3dc78b7cd
11 changed files with 42 additions and 39 deletions

View File

@@ -20,7 +20,7 @@ pub struct SnapshotCsv;
impl SnapshotMiddleware for SnapshotCsv {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -162,7 +162,7 @@ Ack,Ack!,,An exclamation of despair,¡Ay!"#,
let entry = imfs.get("/foo.csv").unwrap();
let instance_snapshot =
SnapshotCsv::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotCsv::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -184,7 +184,7 @@ Ack,Ack!,,An exclamation of despair,¡Ay!"#,
let entry = imfs.get("/foo.csv").unwrap();
let instance_snapshot =
SnapshotCsv::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotCsv::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();

View File

@@ -18,7 +18,7 @@ pub struct SnapshotDir;
impl SnapshotMiddleware for SnapshotDir {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -97,7 +97,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotDir::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotDir::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -115,7 +115,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotDir::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotDir::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();

View File

@@ -19,7 +19,7 @@ pub struct SnapshotJsonModel;
impl SnapshotMiddleware for SnapshotJsonModel {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -163,10 +163,13 @@ mod test {
imfs.debug_load_snapshot("/foo.model.json", file);
let entry = imfs.get("/foo.model.json").unwrap();
let instance_snapshot =
SnapshotJsonModel::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
let instance_snapshot = SnapshotJsonModel::from_imfs(
&mut InstanceSnapshotContext::default(),
&mut imfs,
&entry,
)
.unwrap()
.unwrap();
assert_yaml_snapshot!(instance_snapshot);
}

View File

@@ -20,7 +20,7 @@ pub struct SnapshotLua;
impl SnapshotMiddleware for SnapshotLua {
fn from_imfs<F: ImfsFetcher>(
context: &InstanceSnapshotContext,
context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -116,7 +116,7 @@ fn snapshot_lua_file<F: ImfsFetcher>(
/// Scripts named `init.lua`, `init.server.lua`, or `init.client.lua` usurp
/// their parents, which acts similarly to `__init__.py` from the Python world.
fn snapshot_init<F: ImfsFetcher>(
context: &InstanceSnapshotContext,
context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
folder_entry: &ImfsEntry,
init_name: &str,
@@ -156,7 +156,7 @@ mod test {
let entry = imfs.get("/foo.lua").unwrap();
let instance_snapshot =
SnapshotLua::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotLua::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -172,7 +172,7 @@ mod test {
let entry = imfs.get("/foo.server.lua").unwrap();
let instance_snapshot =
SnapshotLua::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotLua::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -188,7 +188,7 @@ mod test {
let entry = imfs.get("/foo.client.lua").unwrap();
let instance_snapshot =
SnapshotLua::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotLua::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -212,7 +212,7 @@ mod test {
let entry = imfs.get("/foo.lua").unwrap();
let instance_snapshot =
SnapshotLua::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotLua::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -236,7 +236,7 @@ mod test {
let entry = imfs.get("/foo.server.lua").unwrap();
let instance_snapshot =
SnapshotLua::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotLua::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();
@@ -262,7 +262,7 @@ mod test {
let entry = imfs.get("/bar.server.lua").unwrap();
let instance_snapshot =
SnapshotLua::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotLua::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();

View File

@@ -14,7 +14,7 @@ pub type SnapshotFileResult = Option<(String, ImfsSnapshot)>;
pub trait SnapshotMiddleware {
fn from_imfs<F: ImfsFetcher>(
context: &InstanceSnapshotContext,
context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static>;

View File

@@ -44,12 +44,12 @@ macro_rules! middlewares {
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
let context = InstanceSnapshotContext::default();
let mut context = InstanceSnapshotContext::default();
$(
log::trace!("trying middleware {} on {}", stringify!($middleware), entry.path().display());
if let Some(snapshot) = $middleware::from_imfs(&context, imfs, entry)? {
if let Some(snapshot) = $middleware::from_imfs(&mut context, imfs, entry)? {
log::trace!("middleware {} success on {}", stringify!($middleware), entry.path().display());
return Ok(Some(snapshot));
}

View File

@@ -22,7 +22,7 @@ pub struct SnapshotProject;
impl SnapshotMiddleware for SnapshotProject {
fn from_imfs<F: ImfsFetcher>(
context: &InstanceSnapshotContext,
context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -212,7 +212,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -239,7 +239,7 @@ mod test {
let entry = imfs.get("/foo/hello.project.json").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -272,7 +272,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -302,7 +302,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -333,7 +333,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -361,7 +361,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -396,7 +396,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -435,7 +435,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");
@@ -479,7 +479,7 @@ mod test {
let entry = imfs.get("/foo").unwrap();
let instance_snapshot =
SnapshotProject::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotProject::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.expect("snapshot error")
.expect("snapshot returned no instances");

View File

@@ -15,7 +15,7 @@ pub struct SnapshotRbxlx;
impl SnapshotMiddleware for SnapshotRbxlx {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {

View File

@@ -17,7 +17,7 @@ pub struct SnapshotRbxm;
impl SnapshotMiddleware for SnapshotRbxm {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -71,7 +71,7 @@ mod test {
let entry = imfs.get("/foo.rbxm").unwrap();
let instance_snapshot =
SnapshotRbxm::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotRbxm::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();

View File

@@ -15,7 +15,7 @@ pub struct SnapshotRbxmx;
impl SnapshotMiddleware for SnapshotRbxmx {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -77,7 +77,7 @@ mod test {
let entry = imfs.get("/foo.rbxmx").unwrap();
let instance_snapshot =
SnapshotRbxmx::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotRbxmx::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();

View File

@@ -20,7 +20,7 @@ pub struct SnapshotTxt;
impl SnapshotMiddleware for SnapshotTxt {
fn from_imfs<F: ImfsFetcher>(
_context: &InstanceSnapshotContext,
_context: &mut InstanceSnapshotContext,
imfs: &mut Imfs<F>,
entry: &ImfsEntry,
) -> SnapshotInstanceResult<'static> {
@@ -117,7 +117,7 @@ mod test {
let entry = imfs.get("/foo.txt").unwrap();
let instance_snapshot =
SnapshotTxt::from_imfs(&InstanceSnapshotContext::default(), &mut imfs, &entry)
SnapshotTxt::from_imfs(&mut InstanceSnapshotContext::default(), &mut imfs, &entry)
.unwrap()
.unwrap();