From 11bd268445def722c7ec243c7c49fac8b523ae90 Mon Sep 17 00:00:00 2001 From: Niklas Kapelle Date: Wed, 4 Mar 2026 15:32:23 +0100 Subject: [PATCH] implemented unkown mod install --- src/instance.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/instance.rs b/src/instance.rs index b0de8ce..339175c 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -79,7 +79,7 @@ pub fn files_to_install_mod( install_from_dir(mod_to_install, mod_location.join(data_path))? } ModKind::Root => install_from_dir(mod_to_install, mod_location)?, - ModKind::Unkown => todo!(), + ModKind::Unkown => install_from_dir_to_data(mod_to_install, mod_location)?, }; Ok(files) @@ -138,6 +138,22 @@ fn install_from_dir( Ok(files) } +fn install_from_dir_to_data( + mod_config: &ModConfig, + path: impl AsRef, +) -> anyhow::Result> { + let glob_filter = create_glob_filter(mod_config.ignore())?; + let data = PathBuf::from("Data"); + let files: Vec<_> = walk_files_recursive(&path)? + .map(|entry| entry.path()) + .map(|file_path| file_path.strip_prefix(&path).unwrap().to_owned()) + .filter(|rel_path| should_be_included(rel_path)) + .filter(|rel_path| !glob_filter.is_match(rel_path)) + .map(|rel_path| ModFile::new(&rel_path, data.join(&rel_path), 0)) + .collect(); + Ok(files) +} + fn create_glob_filter(rules: &[String]) -> anyhow::Result { let mut builder = GlobSetBuilder::new();