diff --git a/config.example.toml b/config.example.toml index 2146bdee..04ac31be 100644 --- a/config.example.toml +++ b/config.example.toml @@ -291,6 +291,16 @@ # (default: false) # exclude_encrypted = false +[mise] +# Upgrades to the latest version available, bumping the version in mise.toml +# (default: false) +# bump = false + +# Run interactively +# (default: false) +# interactive = false + + [npm] # Use sudo if the NPM directory isn't owned by the current user # use_sudo = true diff --git a/src/config.rs b/src/config.rs index fcd8e634..d485407a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -173,6 +173,14 @@ pub struct Chezmoi { exclude_encrypted: Option, } +#[derive(Deserialize, Default, Debug, Merge)] +#[serde(deny_unknown_fields)] +#[allow(clippy::upper_case_acronyms)] +pub struct Mise { + bump: Option, + interactive: Option, +} + #[derive(Deserialize, Default, Debug, Merge)] #[serde(deny_unknown_fields)] #[allow(clippy::upper_case_acronyms)] @@ -471,6 +479,9 @@ pub struct ConfigFile { #[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)] chezmoi: Option, + #[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)] + mise: Option, + #[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)] yarn: Option, @@ -1804,6 +1815,22 @@ impl Config { .unwrap_or(false) } + pub fn mise_bump(&self) -> bool { + self.config_file + .mise + .as_ref() + .and_then(|mise| mise.bump) + .unwrap_or(false) + } + + pub fn mise_interactive(&self) -> bool { + self.config_file + .mise + .as_ref() + .and_then(|mise| mise.interactive) + .unwrap_or(false) + } + pub fn vscode_profile(&self) -> Option<&str> { let vscode_cfg = self.config_file.vscode.as_ref()?; let profile = vscode_cfg.profile.as_ref()?; diff --git a/src/steps/os/unix.rs b/src/steps/os/unix.rs index d43eb3e7..4640a1d2 100644 --- a/src/steps/os/unix.rs +++ b/src/steps/os/unix.rs @@ -824,7 +824,19 @@ pub fn run_mise(ctx: &ExecutionContext) -> Result<()> { } } - ctx.execute(&mise).arg("upgrade").status_checked() + let mut cmd = ctx.execute(&mise); + + cmd.arg("upgrade"); + + if ctx.config().mise_interactive() { + cmd.arg("--interactive"); + } + + if ctx.config().mise_bump() { + cmd.arg("--bump"); + } + + cmd.status_checked() } pub fn run_home_manager(ctx: &ExecutionContext) -> Result<()> {