Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e19437b
refactor(windows): manage the GC handle with standard file APIs
Cloud0310 Sep 16, 2026
45817dc
refactor(test): inline the uninstall GC cleanup check
Cloud0310 Sep 16, 2026
17c981f
fix(windows): attempt GC cleanup after uninstall errors
Cloud0310 Sep 16, 2026
27b6198
refactor(windows): manage the uninstall GC path with tempfile
Cloud0310 Sep 16, 2026
5a3bbe0
fix(windows): copy executable contents for uninstall GC
Cloud0310 Sep 16, 2026
ad25426
fix(windows): use the running executable for uninstall GC
Cloud0310 Sep 16, 2026
7194785
fix(windows): run uninstall GC from the system temporary directory
Cloud0310 Sep 16, 2026
bf0bb84
fix(uninstall): reuse resolved cargo home during cleanup
Cloud0310 Sep 16, 2026
31d8104
feat(home): resolve category homes
Cloud0310 Aug 22, 2026
d9ec7e3
refactor(self-update): resolve rustup home through Process
Cloud0310 Aug 22, 2026
0367e1d
feat(self-update): use absolute shell paths with legacy compatibility
Cloud0310 Sep 6, 2026
1179747
feat(config): expose rustup cache home through Cfg
Cloud0310 Aug 3, 2026
edaa173
feat(update-hash): store update hashes in the cache home
Cloud0310 Aug 3, 2026
f69f0a4
feat(download): use the cache home for temporary files
Cloud0310 Aug 3, 2026
0f91ee7
feat(download): use the cache home for downloads
Cloud0310 Aug 20, 2026
0c807d9
feat(config): expose rustup config home through Cfg
Cloud0310 Aug 20, 2026
f01cca5
feat(config): read and write settings in the config home
Cloud0310 Aug 20, 2026
2cba365
feat(config): expose rustup data home through Cfg
Cloud0310 Aug 20, 2026
72e6623
feat(toolchain): use the data home for toolchains
Cloud0310 Aug 20, 2026
6503192
feat(toolchain): migrate fallback directory to data home
Cloud0310 Aug 23, 2026
3821874
feat(config): expose rustup state home through Cfg
Cloud0310 Aug 20, 2026
260d0fb
feat(state): read and write state in the state home
Cloud0310 Aug 20, 2026
189f039
feat(installer): display split rustup home directories
Cloud0310 Aug 20, 2026
a6338c9
feat(installer): migrate bin and env paths to split homes
Cloud0310 Sep 4, 2026
59244e8
fix(config): avoid unnecessary legacy home resolution
Cloud0310 Sep 6, 2026
a4dee13
feat(cli): expose resolved category homes in rustup show
Cloud0310 Sep 6, 2026
4b49300
feat(uninstall): remove legacy and category rustup homes
Cloud0310 Aug 23, 2026
04152ab
test(uninstall): preserve paths after category home removal
Cloud0310 Sep 16, 2026
a514e2b
feat(uninstall): clean legacy and category bins and PATH entries
Cloud0310 Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ features = [
"Win32_Foundation",
"Win32_Security",
"Win32_Storage_FileSystem",
"Win32_System_Com",
"Win32_System_Console",
"Win32_System_Diagnostics_ToolHelp",
"Win32_System_IO",
Expand All @@ -131,6 +132,7 @@ features = [
"Win32_System_Threading",
"Win32_System_WindowsProgramming",
"Win32_UI",
"Win32_UI_Shell",
"Win32_UI_WindowsAndMessaging",
]
version = "0.61"
Expand Down
42 changes: 34 additions & 8 deletions src/cli/rustup_mode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ enum ShowSubcmd {
verbose: bool,
},

/// Display the computed value of RUSTUP_HOME
/// Display resolved Rustup home directories
Home,

/// Show the default profile used for the `rustup install` command
Expand Down Expand Up @@ -1272,14 +1272,27 @@ async fn show(cfg: &Cfg<'_>, verbose: bool) -> anyhow::Result<ExitCode> {
cfg.default_host_tuple()?
)?;

// Print rustup home directory
{
let mut t = t.lock();
writeln!(
t,
"{HEADER}rustup home: {HEADER:#}{}",
cfg.rustup_dir.display()
)?;
if cfg.process.use_category_home() {
writeln!(t, "{HEADER}rustup homes:{HEADER:#}")?;
for (name, home) in [
("config", &cfg.rustup_config_dir),
("state", &cfg.rustup_state_dir),
("data", &cfg.rustup_data_dir),
("cache", &cfg.rustup_cache_dir),
("bin", &cfg.process.rustup_bin_home()?),
] {
writeln!(t, " {name}: {}", home.display())?;
}
} else {
// In legacy mode, all four category homes equal the resolved RUSTUP_HOME.
writeln!(
t,
"{HEADER}rustup home: {HEADER:#}{}",
cfg.rustup_data_dir.display()
)?;
}
writeln!(t)?;
}

Expand Down Expand Up @@ -1427,7 +1440,20 @@ async fn show_active_toolchain(cfg: &Cfg<'_>, verbose: bool) -> anyhow::Result<E

#[tracing::instrument(level = "trace", skip_all)]
fn show_rustup_home(cfg: &Cfg<'_>) -> anyhow::Result<ExitCode> {
writeln!(cfg.process.stdout().lock(), "{}", cfg.rustup_dir.display())?;
let mut stdout = cfg.process.stdout().lock();
if cfg.process.use_category_home() {
for (name, home) in [
("config", &cfg.rustup_config_dir),
("state", &cfg.rustup_state_dir),
("data", &cfg.rustup_data_dir),
("cache", &cfg.rustup_cache_dir),
] {
writeln!(stdout, "{name}: {}", home.display())?;
}
} else {
// In legacy mode, all four category homes equal the resolved RUSTUP_HOME.
writeln!(stdout, "{}", cfg.rustup_data_dir.display())?;
}
Ok(ExitCode::SUCCESS)
}

Expand Down
Loading
Loading