From f175309688f9e6a6c828f87b38ce3b8694274e5d Mon Sep 17 00:00:00 2001 From: Alex Dewar Date: Thu, 19 Jun 2025 12:12:11 +0100 Subject: [PATCH 1/4] Add `current_dir` to dev dependencies --- Cargo.lock | 7 +++++++ Cargo.toml | 1 + 2 files changed, 8 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 9dc651f69..2387ea47f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -318,6 +318,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "current_dir" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eef2919c1b81568a02425279ba21d61a450e76848eb1b50dff756b739529b70a" + [[package]] name = "deranged" version = "0.4.0" @@ -785,6 +791,7 @@ dependencies = [ "clap", "clap-markdown", "csv", + "current_dir", "fern", "float-cmp", "highs", diff --git a/Cargo.toml b/Cargo.toml index 2bf9ee480..4023be694 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ clap-markdown = "0.1.5" platform-info = "2.0.5" [dev-dependencies] +current_dir = "0.1.2" regex = "1.11.1" rstest = {version = "0.25.0", default-features = false, features = ["crate-name"]} From 243be660f287c07b16389b2c3dcc4f88b07d0280 Mon Sep 17 00:00:00 2001 From: Alex Dewar Date: Thu, 19 Jun 2025 12:16:05 +0100 Subject: [PATCH 2/4] Read `settings.toml` from CWD cf. model dir Closes #513. --- .../simple/settings.toml => settings.toml | 0 src/commands.rs | 2 +- src/settings.rs | 22 +++++++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) rename examples/simple/settings.toml => settings.toml (100%) diff --git a/examples/simple/settings.toml b/settings.toml similarity index 100% rename from examples/simple/settings.toml rename to settings.toml diff --git a/src/commands.rs b/src/commands.rs index a9f1f723f..7d563a42e 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -80,7 +80,7 @@ pub fn handle_run_command( debug_model: bool, ) -> Result<()> { // Load program settings - let mut settings = Settings::from_path(model_path).context("Failed to load settings.")?; + let mut settings = Settings::load().context("Failed to load settings.")?; // This setting can be overridden by command-line argument if debug_model { diff --git a/src/settings.rs b/src/settings.rs index 1acb18d5e..8fdc80b5a 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -28,19 +28,20 @@ impl Settings { /// # Returns /// /// The program settings as a `Settings` struct or an error if the file is invalid - pub fn from_path>(model_dir: P) -> Result { - let file_path = model_dir.as_ref().join(SETTINGS_FILE_NAME); + pub fn load() -> Result { + let file_path = Path::new(SETTINGS_FILE_NAME); if !file_path.is_file() { return Ok(Settings::default()); } - read_toml(&file_path) + read_toml(file_path) } } #[cfg(test)] mod tests { use super::*; + use current_dir::Cwd; use std::fs::File; use std::io::Write; use tempfile::tempdir; @@ -48,21 +49,24 @@ mod tests { #[test] fn test_settings_from_path_no_file() { let dir = tempdir().unwrap(); - assert_eq!( - Settings::from_path(dir.path()).unwrap(), - Settings::default() - ); + let mut cwd = Cwd::mutex().lock().unwrap(); + cwd.set(dir.path()).unwrap(); + assert_eq!(Settings::load().unwrap(), Settings::default()); } #[test] fn test_settings_from_path() { let dir = tempdir().unwrap(); + let mut cwd = Cwd::mutex().lock().unwrap(); + cwd.set(dir.path()).unwrap(); + { - let mut file = File::create(dir.path().join(SETTINGS_FILE_NAME)).unwrap(); + let mut file = File::create(Path::new(SETTINGS_FILE_NAME)).unwrap(); writeln!(file, "log_level = \"warn\"").unwrap(); } + assert_eq!( - Settings::from_path(dir.path()).unwrap(), + Settings::load().unwrap(), Settings { log_level: Some("warn".to_string()), debug_model: false From 30e5e082857b0ae21a33c291c16568bc65b11b77 Mon Sep 17 00:00:00 2001 From: Alex Dewar Date: Thu, 19 Jun 2025 12:18:56 +0100 Subject: [PATCH 3/4] Include example `settings.toml` with release bundle --- .github/workflows/release.yml | 1 + settings.toml => assets/settings.toml | 0 2 files changed, 1 insertion(+) rename settings.toml => assets/settings.toml (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f3f86c2ed..af39314d3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -48,6 +48,7 @@ jobs: mkdir muse2 cp target/release/muse2${{ matrix.exe_suffix }} muse2 cp LICENSE muse2/LICENCE.txt + cp assets/settings.toml muse2 cp assets/readme/readme_${{ matrix.osname }}.txt muse2/README.txt - uses: actions/upload-artifact@v4 if: ${{ github.event_name != 'release' }} diff --git a/settings.toml b/assets/settings.toml similarity index 100% rename from settings.toml rename to assets/settings.toml From 183350dfca69e57fa779d2b1dcc075c9d3582410 Mon Sep 17 00:00:00 2001 From: Alex Dewar Date: Mon, 23 Jun 2025 17:38:51 +0100 Subject: [PATCH 4/4] Remove `examples/simple_mc/settings.toml` --- examples/simple_mc/settings.toml | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 examples/simple_mc/settings.toml diff --git a/examples/simple_mc/settings.toml b/examples/simple_mc/settings.toml deleted file mode 100644 index 35f983615..000000000 --- a/examples/simple_mc/settings.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Modify this file if you want to change your program settings -# log_level = "info" -# debug_model = false