forked from rojo-rbx/rojo
fix: derive adjacent meta stem from snapshot path, not instance name
The previous fix used split('.').next() to get the meta stem from the
snapshot path, which only takes the first dot-segment. This broke names
containing dots (e.g. "Name.new" → "Name.new.luau" would produce
"Name.meta.json" instead of "Name.new.meta.json").
Strip the full middleware extension (e.g. ".server.luau", ".txt") from
the snapshot path filename instead. This correctly handles all cases:
Name.new.luau → Name.new → Name.new.meta.json
_Init.server.luau → _Init → _Init.meta.json
Name.new.txt → Name.new → Name.new.meta.json
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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")?,
|
||||
|
||||
@@ -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")?,
|
||||
|
||||
@@ -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")?,
|
||||
|
||||
Reference in New Issue
Block a user