From d9531f1d4ef3641f19414478cfb72c8993a8883a Mon Sep 17 00:00:00 2001 From: Quaternions Date: Wed, 24 Jan 2024 16:25:00 -0800 Subject: [PATCH] custom file stem --- src/main.rs | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5465ce0..6774f97 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1356,14 +1356,17 @@ enum FileDiscernment{ async fn discern_file(entry:&tokio::fs::DirEntry,style:Option)->AResult{ let path=entry.path(); - let file_discernment=match path.extension(){ - Some(extension)=>match extension.to_str(){ - Some("lua") - |Some("module.lua")=>FileDiscernment::Script(ScriptHint::ModuleScript), - Some("client.lua")=>FileDiscernment::Script(ScriptHint::LocalScript), - Some("server.lua")=>FileDiscernment::Script(ScriptHint::Script), - Some("rbxmx")=>FileDiscernment::Model, - other=>Err(anyhow::Error::msg(format!("Weird file extension: {other:?}")))?, + let (ext_len,file_discernment)=match path.extension(){ + Some(extension)=>{ + let ext=extension.to_str().unwrap_or(""); + (ext.len(),match ext{ + "lua" + |"module.lua"=>FileDiscernment::Script(ScriptHint::ModuleScript), + "client.lua"=>FileDiscernment::Script(ScriptHint::LocalScript), + "server.lua"=>FileDiscernment::Script(ScriptHint::Script), + "rbxmx"=>FileDiscernment::Model, + other=>Err(anyhow::Error::msg(format!("Weird file extension: {other:?}")))?, + }) }, None=>Err(anyhow::Error::msg("No file extension"))?, }; @@ -1373,13 +1376,16 @@ async fn discern_file(entry:&tokio::fs::DirEntry,style:Option)-> |(Some(DecompileStyle::Rojo),FileDiscernment::Model)=>Err(anyhow::Error::msg("Invalid file extension for style"))?, _=>(), } - let search_name=path.to_str().unwrap(); + let mut search_name=entry + .file_name() + .into_string() + .map_err(|e|anyhow::Error::msg(format!("insane file name {e:?}")))?; + search_name.truncate(search_name.len()-ext_len-1);//remove period let file=tokio::fs::File::open(path.as_path()).await?; Ok(match file_discernment{ - FileDiscernment::Model=>model_node(search_name,file).await?, - FileDiscernment::Script(hint)=>script_node(search_name,file,hint).await?, + FileDiscernment::Model=>model_node(search_name.as_str(),file).await?, + FileDiscernment::Script(hint)=>script_node(search_name.as_str(),file,hint).await?, }) - } #[derive(Debug)]