diff --git a/src/main.rs b/src/main.rs index 6f0ce8a..33a88dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -65,18 +65,35 @@ fn get_gshade_presets(xiv_install: PathBuf, config: GeezShadeConfig) -> anyhow:: let shaders_zip = zip::ZipArchive::new(Cursor::new(gshade_shaders))?; let presets_zip = zip::ZipArchive::new(Cursor::new(gshade_presets))?; - let shaders_folders = vec![ - "GShade-master/Textures", - "GShade-master/Shaders", - "GShade-master/ComputeShaders", - ]; - let presets_folders = vec!["GShade-Presets-master/FFXIV"]; + let shaders_folder_name = shaders_zip + .file_names() + .next() + .unwrap() + .split('/') + .next() + .unwrap() + .to_string(); + + let presets_folder_name = presets_zip + .file_names() + .next() + .unwrap() + .split('/') + .next() + .unwrap() + .to_string(); + + let shaders_folders = vec!["Textures", "Shaders", "ComputeShaders"] + .iter() + .map(|x| format!("{}/{}", shaders_folder_name, x)) + .collect::>(); + let presets_folders = vec![format!("{}/FFXIV", presets_folder_name)]; let dir = xiv_install.join("reshade-shaders"); println!("extracting presets"); - extract(dir.clone(), shaders_zip, shaders_folders.clone())?; - extract(dir, presets_zip, presets_folders.clone())?; + extract(dir.clone(), shaders_zip, shaders_folders)?; + extract(dir, presets_zip, presets_folders)?; Ok(()) } @@ -84,7 +101,7 @@ fn get_gshade_presets(xiv_install: PathBuf, config: GeezShadeConfig) -> anyhow:: fn extract( dir: PathBuf, presets_zip: ZipArchive>>, - presets_folders: Vec<&str>, + presets_folders: Vec, ) -> anyhow::Result<()> { for filename in presets_zip.file_names() { for folder in &presets_folders {