feat(deno_dir): check $XDG_CACHE_HOME before defaulting to system cache path#73
feat(deno_dir): check $XDG_CACHE_HOME before defaulting to system cache path#73dsherret merged 1 commit intodenoland:mainfrom uncenter:feat/xdg
$XDG_CACHE_HOME before defaulting to system cache path#73Conversation
| let root: PathBuf = if let Some(root) = maybe_custom_root { | ||
| root | ||
| } else if let Some(xdg_cache_dir) = sys.env_var_path("XDG_CACHE_HOME") { | ||
| xdg_cache_dir.join("deno") |
There was a problem hiding this comment.
I'm not sure this is supposed to be done for macos. It's explicitly avoided here: https://github.com/dsherret/sys_traits/blob/32596b234a024ba66ec2c43bf66faf220c7d9687/src/impls/real.rs#L100
There was a problem hiding this comment.
For example, go doesn't seem to respect xdg_cache_home on mac: https://pkg.go.dev/os#UserCacheDir
There was a problem hiding this comment.
(It feels ok to just support this unconditionally if it's set though. I'm just not familiar enough with what's supposed to be done here.)
There was a problem hiding this comment.
Generally I think if the user has gone out of their way to explicitly set the XDG_* variables, we can assume they wish for programs to respect them. (This is only the case for command line programs, and not GUI applications - those generally don't and aren't expected to respect XDG variables on macOS.)
There was a problem hiding this comment.
You can also search through site-wide GitHub issues for "macos" and "xdg" and find many open issues requesting support for it on macOS. Personally I've created a crate (https://github.com/uncenter/user_dirs) and an npm library (https://github.com/uncenter/xdirs) for doing this the "correct" (in my opinion) way.
There was a problem hiding this comment.
Not to add noise to this PR/thread, but I would really want to see this merged*. I have an issue open in (denoland/deployctl#134) since 2022, which based on this and this PR would finally be resolved.
*I get that it’s not the default on macOS, but as @uncenter mentioned: if a user goes out of their way to keep their $HOME clean, that should be respected.
dsherret
left a comment
There was a problem hiding this comment.
Discussed internally. Going to merge. Thanks!
As the title says, respects explicitly defined XDG variables by checking the user's preferred cache location before defaulting to the OS cache path. I believe this closes my downstream issue denoland/deno#27964.