diff --git a/Cargo.lock b/Cargo.lock index 74c919f..4a06d9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,9 +59,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -73,7 +73,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" dependencies = [ "android-properties", - "bitflags 2.4.2", + "bitflags 2.5.0", "cc", "cesu8", "jni", @@ -204,9 +204,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" dependencies = [ "serde", ] @@ -289,7 +289,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "log", "polling", "rustix", @@ -1047,7 +1047,7 @@ version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cfg_aliases", "cgl", "core-foundation", @@ -1382,7 +1382,7 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", "redox_syscall 0.4.1", ] @@ -1393,7 +1393,7 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", "redox_syscall 0.4.1", ] @@ -1510,7 +1510,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "jni-sys", "log", "ndk-sys", @@ -1672,7 +1672,7 @@ version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -1793,7 +1793,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plox" -version = "0.3.0" +version = "0.3.1" dependencies = [ "byteorder", "clap", @@ -1816,7 +1816,7 @@ dependencies = [ [[package]] name = "plox_gui" -version = "0.3.0" +version = "0.3.1" dependencies = [ "byteorder", "eframe", @@ -2043,9 +2043,9 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.26" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64", "bytes", @@ -2088,7 +2088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "bitflags 2.4.2", + "bitflags 2.5.0", "serde", "serde_derive", ] @@ -2122,11 +2122,11 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -2311,9 +2311,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay-client-toolkit" @@ -2321,7 +2321,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "calloop", "calloop-wayland-source", "cursor-icon", @@ -2384,9 +2384,9 @@ checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "syn" -version = "2.0.52" +version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ "proc-macro2", "quote", @@ -2559,14 +2559,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.7", + "toml_edit 0.22.9", ] [[package]] @@ -2591,9 +2591,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.7" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" dependencies = [ "indexmap", "serde", @@ -2818,7 +2818,7 @@ version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "rustix", "wayland-backend", "wayland-scanner", @@ -2830,7 +2830,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cursor-icon", "wayland-backend", ] @@ -2852,7 +2852,7 @@ version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -2864,7 +2864,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -2877,7 +2877,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -3182,7 +3182,7 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.4.2", + "bitflags 2.5.0", "bytemuck", "calloop", "cfg_aliases", @@ -3293,7 +3293,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "dlib", "log", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index d97509f..12c5f3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] name = "plox" -version = "0.3.0" +version = "0.3.1" authors = ["Moritz Baron"] description = "PLOX - Plugin Load Order eXpert. PLOX is a tool for analyzing and sorting your plugin load order. Supports Morrowind, OpenMW and Cyberpunk" documentation = "" diff --git a/gui/src/lib.rs b/gui/src/lib.rs index 4aafa0b..1600a3f 100644 --- a/gui/src/lib.rs +++ b/gui/src/lib.rs @@ -123,27 +123,19 @@ fn init_parser(settings: AppSettings, tx: Sender) -> Option { } // sort - //let mut new_order = mods.clone(); - // check order first - //match check_order(&mods, &parser.order_rules) { - // true => { - // // exit - // info!("Mods are in correct order, no sorting needed."); - // let _ = tx.send("Mods are in correct order, no sorting needed.".to_string()); - // } - // false => { - let mut sorter = new_stable_sorter(); - let _ = tx.send("Sorting mods".to_string()); - let new_order = match sorter.topo_sort(game, &mods, &parser.order_rules) { - Ok(new) => new, - Err(e) => { - error!("error sorting: {e:?}"); - let _ = tx.send(format!("error sorting: {e:?}")); - return None; - } - }; - //} - //} + let mut new_order = mods.iter().map(|m| m.name.clone()).collect(); + if !&parser.order_rules.is_empty() { + let mut sorter = new_stable_sorter(); + let _ = tx.send("Sorting mods".to_string()); + new_order = match sorter.topo_sort(game, &mods, &parser.order_rules) { + Ok(new) => new, + Err(e) => { + error!("error sorting: {e:?}"); + let _ = tx.send(format!("error sorting: {e:?}")); + return None; + } + }; + } let r = AppData { game, diff --git a/src/expressions.rs b/src/expressions.rs index f56c9fc..077779e 100644 --- a/src/expressions.rs +++ b/src/expressions.rs @@ -305,6 +305,7 @@ impl TExpression for DESC { for p in &plugins { if let Some(description) = &p.description { if let Ok(pattern) = regex::Regex::new(&self.regex) { + let description = &description.to_lowercase(); match self.is_negated { true => { if !pattern.is_match(description) { diff --git a/src/lib.rs b/src/lib.rs index 00bd6d8..8a10372 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -519,7 +519,7 @@ pub fn update_new_load_order>( config: Option

, ) -> std::io::Result<()> { match game { - ESupportedGame::Morrowind => update_tes3(result), + ESupportedGame::Morrowind => update_tes3(PathBuf::from("Morrowind.ini"), result, false), ESupportedGame::Openmw => update_openmw(result, config), ESupportedGame::Cyberpunk => update_cp77(result), } @@ -568,11 +568,15 @@ fn update_openmw>(result: &[String], config: Option

) -> std::i Ok(()) } -fn update_tes3(result: &[String]) -> std::io::Result<()> { +pub fn update_tes3>( + morrowind_ini_path: P, + result: &[String], + no_redate: bool, +) -> std::io::Result<()> { // in tes3 we first update the ini with the new order (this is technically not important but we might as well) // check against mw ini - let morrowind_ini_path = PathBuf::from("Morrowind.ini"); - if morrowind_ini_path.exists() { + + if morrowind_ini_path.as_ref().exists() { // parse ini let mut buf = Vec::new(); for line in read_lines(&morrowind_ini_path)?.map_while(Result::ok) { @@ -599,12 +603,14 @@ fn update_tes3(result: &[String]) -> std::io::Result<()> { warn!("No Morrowind.ini found, using all plugins in Data Files"); } - // redate files - let files = result - .iter() - .map(|f| PathBuf::from("Data Files").join(f)) - .collect::>(); - redate_mods(&files)?; + if !no_redate { + // redate files + let files = result + .iter() + .map(|f| PathBuf::from("Data Files").join(f)) + .collect::>(); + redate_mods(&files)?; + } Ok(()) } @@ -1185,40 +1191,6 @@ mod tests { } } - // #[test] - // fn test_update_openmw() { - // let result = ["a".to_owned(), "b".to_owned(), "c".to_owned()]; - // update_openmw(&result).expect("write failed"); - // } - - // #[test] - // fn test_update_tes3() { - // let result = ["a".to_owned(), "b".to_owned(), "c".to_owned()]; - // update_tes3(&result).expect("write failed"); - // } - - // #[test] - // fn test_update_tes3() { - // let morrowind_ini_path = PathBuf::from("Morrowind.ini"); - // if morrowind_ini_path.exists() { - // // parse ini - // if let Ok(ini) = Ini::load_from_file(morrowind_ini_path) { - // if let Some(section) = ini.section(Some("Game Files")) { - // for m in section.iter().map(|f| f.1) { - // eprintln!("{}", m); - // } - // } - // warn!( - // "Morrowind.ini found but no [Game Files] section, using all plugins in Data Files" - // ); - // } else { - // error!("Morrowind.ini could not be read"); - // } - // } else { - // warn!("No Morrowind.ini found, using all plugins in Data Files"); - // } - // } - // #[test] // fn test_redate_mods() { // let result = [