{"record":{"id":"c33fa2abb504009d","repo":"jdx/mise","slug":"brew-prune-is-not-supported-on-windows","errorCode":null,"errorMessage":"brew prune is not supported on windows","messagePattern":"brew prune is not supported on windows","errorType":"validation","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/cli/system/prune.rs","lineNumber":146,"sourceCode":"            .iter()\n            .map(|candidate| format!(\"{}@{}\", candidate.token, candidate.version))\n            .collect::<Vec<_>>();\n        if !self.yes && !Settings::get().yes && console::user_attended_stderr() {\n            let msg = format!(\"brew-cask: prune {}?\", remove.join(\", \"));\n            if !prompt::confirm(msg)? {\n                info!(\"brew-cask: skipped\");\n                return Ok(());\n            }\n        }\n        let removed = brew::apply_cask_prune_plan(&plan, false)?;\n        info!(\"brew-cask: pruned {removed} casks\");\n        Ok(())\n    }\n\n    #[cfg(not(unix))]\n    async fn run_brew(self) -> Result<()> {\n        let _ = self.manager;\n        bail!(\"brew prune is not supported on windows\")\n    }\n\n    #[cfg(not(unix))]\n    async fn run_brew_cask(self) -> Result<()> {\n        let _ = self.manager;\n        bail!(\"brew-cask prune is not supported on windows\")\n    }\n}\n\nstatic AFTER_LONG_HELP: &str = color_print::cstr!(\n    r#\"<bold><underline>Examples:</underline></bold>\n\n    $ <bold>mise bootstrap packages prune --manager brew</bold>\n    $ <bold>mise bootstrap packages prune --manager brew --dry-run</bold>\n    $ <bold>mise bootstrap packages prune --manager brew --yes</bold>\n    $ <bold>mise bootstrap packages prune --manager brew-cask --dry-run</bold>\n\"#\n);","sourceCodeStart":128,"sourceCodeEnd":164,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/cli/system/prune.rs#L128-L164","documentation":"The Windows build of mise compiles run_brew as a stub (cfg(not(unix))) that always bails, because Homebrew pruning is only implemented for unix. Any `mise bootstrap packages prune --manager brew` on Windows fails unconditionally — nothing is inspected first.","triggerScenarios":"Running `mise bootstrap packages prune --manager brew` on any Windows host (native or MSVC toolchain build of mise).","commonSituations":"Shared mise config/bootstrap script executed on Windows CI runners; developers on Windows running a setup script written for macOS colleagues.","solutions":["Skip brew prune on Windows: guard the call with an OS check (e.g. `if [ \"$(uname)\" != \"Darwin\" ] && [ \"$(uname)\" != \"Linux\" ]; then ... fi` or in PowerShell check $IsWindows)","Use WSL for brew-based workflows on Windows","Manage Windows packages with a native manager (winget/choco/scoop) instead"],"exampleFix":"# before\n$ mise bootstrap packages prune --manager brew   # on Windows PowerShell\n# error: brew prune is not supported on windows\n\n# after\n# bootstrap.ps1\nif (-not $IsWindows) { mise bootstrap packages prune --manager brew }","handlingStrategy":"validation","validationCode":"# PowerShell\nif (-not $IsWindows) { mise bootstrap packages prune --manager brew }\n\n# bash\n[ \"$(uname)\" != \"_NT-\"* ] && [ \"$(uname -s 2>/dev/null || uname)\" != MINGW* ] && mise bootstrap packages prune --manager brew","typeGuard":null,"tryCatchPattern":"mise bootstrap packages prune --manager brew || { echo 'brew prune unsupported on this platform' >&2; true; }","preventionTips":["Make bootstrap scripts platform-aware from day one rather than catching the error","Keep brew workflows in WSL on Windows developer machines"],"tags":["mise","windows","brew","prune","platform-support","system-packages"],"backgroundTag":"platform-not-supported","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}