Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(deno_dir): check $XDG_CACHE_HOME before defaulting to system cache path #73

Merged
merged 1 commit into from
Feb 18, 2025

Conversation

uncenter
Copy link
Contributor

@uncenter uncenter commented Feb 5, 2025

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.

@CLAassistant
Copy link

CLAassistant commented Feb 5, 2025

CLA assistant check
All committers have signed the CLA.

@@ -29,6 +29,8 @@ pub fn resolve_deno_dir<
maybe_custom_root.or_else(|| sys.env_var_path("DENO_DIR"));
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")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For example, go doesn't seem to respect xdg_cache_home on mac: https://pkg.go.dev/os#UserCacheDir

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(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.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Member

@dsherret dsherret left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed internally. Going to merge. Thanks!

@dsherret dsherret merged commit 8d5e282 into denoland:main Feb 18, 2025
5 checks passed
@uncenter uncenter deleted the feat/xdg branch February 18, 2025 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants