diff --git a/src/snapshot_middleware/csv.rs b/src/snapshot_middleware/csv.rs index 16d97329..26200591 100644 --- a/src/snapshot_middleware/csv.rs +++ b/src/snapshot_middleware/csv.rs @@ -109,11 +109,15 @@ pub fn syncback_csv<'sync>( if !meta.is_empty() { let parent = snapshot.path.parent_err()?; - let meta_stem = snapshot.path - .file_name() - .and_then(|n| n.to_str()) - .map(|s| s.split('.').next().unwrap_or(s)) - .unwrap_or_else(|| new_inst.name.as_str()); + let meta_stem = snapshot.middleware + .and_then(|mw| { + let ext = format!(".{}", crate::syncback::extension_for_middleware(mw)); + snapshot.path.file_name() + .and_then(|n| n.to_str()) + .and_then(|s| s.strip_suffix(ext.as_str())) + .map(str::to_owned) + }) + .unwrap_or_else(|| new_inst.name.clone()); fs_snapshot.add_file( parent.join(format!("{meta_stem}.meta.json")), serde_json::to_vec_pretty(&meta).context("cannot serialize metadata")?, diff --git a/src/snapshot_middleware/lua.rs b/src/snapshot_middleware/lua.rs index c6ef07ae..4f68ef99 100644 --- a/src/snapshot_middleware/lua.rs +++ b/src/snapshot_middleware/lua.rs @@ -158,11 +158,15 @@ pub fn syncback_lua<'sync>( if !meta.is_empty() { let parent_location = snapshot.path.parent_err()?; - let meta_stem = snapshot.path - .file_name() - .and_then(|n| n.to_str()) - .map(|s| s.split('.').next().unwrap_or(s)) - .unwrap_or_else(|| snapshot.new_inst().name.as_str()); + let meta_stem = snapshot.middleware + .and_then(|mw| { + let ext = format!(".{}", crate::syncback::extension_for_middleware(mw)); + snapshot.path.file_name() + .and_then(|n| n.to_str()) + .and_then(|s| s.strip_suffix(ext.as_str())) + .map(str::to_owned) + }) + .unwrap_or_else(|| snapshot.new_inst().name.clone()); fs_snapshot.add_file( parent_location.join(format!("{meta_stem}.meta.json")), serde_json::to_vec_pretty(&meta).context("cannot serialize metadata")?, diff --git a/src/snapshot_middleware/txt.rs b/src/snapshot_middleware/txt.rs index a4cf9d9c..194f4bbe 100644 --- a/src/snapshot_middleware/txt.rs +++ b/src/snapshot_middleware/txt.rs @@ -58,11 +58,15 @@ pub fn syncback_txt<'sync>( if !meta.is_empty() { let parent = snapshot.path.parent_err()?; - let meta_stem = snapshot.path - .file_name() - .and_then(|n| n.to_str()) - .map(|s| s.split('.').next().unwrap_or(s)) - .unwrap_or_else(|| new_inst.name.as_str()); + let meta_stem = snapshot.middleware + .and_then(|mw| { + let ext = format!(".{}", crate::syncback::extension_for_middleware(mw)); + snapshot.path.file_name() + .and_then(|n| n.to_str()) + .and_then(|s| s.strip_suffix(ext.as_str())) + .map(str::to_owned) + }) + .unwrap_or_else(|| new_inst.name.clone()); fs_snapshot.add_file( parent.join(format!("{meta_stem}.meta.json")), serde_json::to_vec_pretty(&meta).context("could not serialize metadata")?,