diff --git a/src/file/source/file.rs b/src/file/source/file.rs index bf30c119..430df98b 100644 --- a/src/file/source/file.rs +++ b/src/file/source/file.rs @@ -59,9 +59,13 @@ impl FileSourceFile { ))) }; } - // Adding a dummy extension will make sure we will not override secondary extensions, i.e. "file.local" - // This will make the following set_extension function calls to append the extension. - let mut filename = add_dummy_extension(filename); + + let mut filename = filename; + // Preserve any extension-like text within the provided file stem by appending a fake extension + // which will be replaced by `set_extension()` calls (e.g. `file.local.placeholder` => `file.local.json`) + if filename.extension().is_some() { + filename.as_mut_os_string().push(".placeholder"); + } match format_hint { Some(format) => { @@ -134,18 +138,3 @@ where }) } } - -fn add_dummy_extension(mut filename: PathBuf) -> PathBuf { - match filename.extension() { - Some(extension) => { - let mut ext = extension.to_os_string(); - ext.push("."); - ext.push("dummy"); - filename.set_extension(ext); - } - None => { - filename.set_extension("dummy"); - } - } - filename -}