mise 2026.9.2

Dev tools, env vars, and tasks in one CLI
use eyre::Result;
use indoc::indoc;

/// Output direnv function to use mise inside direnv
///
/// See https://mise.jdx.dev/direnv.html for more information
///
/// Because this generates the idiomatic files based on currently installed plugins,
/// you should run this command after installing new plugins. Otherwise
/// direnv may not know to update environment variables when idiomatic file versions change.
#[derive(Debug, usage_rs::Args)]
#[usage(
    hide = true,
    verbatim_doc_comment,
    example(
        r###"mise direnv activate > ~/.config/direnv/lib/use_mise.sh
echo 'use mise' > .envrc
direnv allow"###
    )
)]
pub(super) struct DirenvActivate {}

impl DirenvActivate {
    pub(super) async fn run(self) -> Result<()> {
        miseprintln!(
            //       source_env "$(mise direnv envrc "$@")"
            indoc! {r#"
                ### Do not edit. This was autogenerated by 'mise direnv' ###
                use_mise() {{
                  direnv_load mise direnv exec
                }}
            "#}
        );

        Ok(())
    }
}