From 0f4b2c7306940020525a9f00149e5610f4a74f03 Mon Sep 17 00:00:00 2001 From: Roland Schaer Date: Wed, 23 Apr 2025 11:24:20 +0200 Subject: [PATCH 1/2] refactor: store tool version opts in .mise.backend --- src/cli/args/backend_arg.rs | 19 +++++++++++++++++++ src/toolset/install_state.rs | 7 ++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/cli/args/backend_arg.rs b/src/cli/args/backend_arg.rs index 49a199b9e3..5a56ed359c 100644 --- a/src/cli/args/backend_arg.rs +++ b/src/cli/args/backend_arg.rs @@ -167,6 +167,25 @@ impl BackendArg { } } + pub fn full_with_opts(&self) -> String { + let mut full = self.full(); + if let Some(c) = regex!(r"^(.+)\[(.+)\]$").captures(&full) { + full = c.get(1).unwrap().as_str().to_string(); + } + if let Some(opts) = &self.opts { + let opts_str = opts + .opts + .iter() + .map(|(k, v)| format!("{k}={v}")) + .collect::>() + .join(","); + if !full.contains(['[', ']']) && !opts_str.is_empty() { + return format!("{full}[{opts_str}]"); + } + } + full + } + pub fn opts(&self) -> ToolVersionOptions { self.opts.clone().unwrap_or_else(|| { if let Some(c) = regex!(r"^(.+)\[(.+)\]$").captures(&self.full()) { diff --git a/src/toolset/install_state.rs b/src/toolset/install_state.rs index 6e4c315078..e5e673810c 100644 --- a/src/toolset/install_state.rs +++ b/src/toolset/install_state.rs @@ -233,7 +233,12 @@ fn read_backend_meta(short: &str) -> Option> { } pub fn write_backend_meta(ba: &BackendArg) -> Result<()> { - let doc = format!("{}\n{}", ba.short, ba.full()); + // do not write options for core plugins + let full = match ba.full().starts_with("core:") { + true => ba.full(), + false => ba.full_with_opts(), + }; + let doc = format!("{}\n{}", ba.short, full); file::write(backend_meta_path(&ba.short), doc.trim())?; Ok(()) } From 4ec9038622e9d18e17b478bf3a027d37c489e61b Mon Sep 17 00:00:00 2001 From: Roland Schaer Date: Mon, 28 Apr 2025 17:40:56 +0200 Subject: [PATCH 2/2] fix: store tool version opts in .mise.backend --- src/cli/args/backend_arg.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cli/args/backend_arg.rs b/src/cli/args/backend_arg.rs index 5a56ed359c..0483428635 100644 --- a/src/cli/args/backend_arg.rs +++ b/src/cli/args/backend_arg.rs @@ -168,9 +168,9 @@ impl BackendArg { } pub fn full_with_opts(&self) -> String { - let mut full = self.full(); - if let Some(c) = regex!(r"^(.+)\[(.+)\]$").captures(&full) { - full = c.get(1).unwrap().as_str().to_string(); + let full = self.full(); + if regex!(r"^(.+)\[(.+)\]$").is_match(&full) { + return full; } if let Some(opts) = &self.opts { let opts_str = opts