2024年Clojure状态调查!中分享您的想法。

欢迎!请访问关于页面了解更多关于这一服务的信息。

+4
工具
重新标记

不需要显式设置XDG_CONFIG_HOME,凡是遵循XDG规范的工具只需将数据写入$HOME/.config/clojure即可。

目前,如果未设置XDG_CONFIG_HOME,它会直接写入$HOME/.clojure。

更多内容请见这里
https://clojureverse.org/t/opinion-about-xdg-support-by-the-clojure-tools-deps-cli/9814/3

在非XDG系统中,一定会有$HOME/.config目录吗?如果不是,那么如果CLI是首次运行在新的用户账户中,它将找不到$HOME/.config目录,因此XDG_CONFIG_HOME也不会被设置,那么它是否就不会确定这是一个XDG系统,而是将其写入$HOME/.clojure而不是$HOME/.config/clojure?(这个问题适用于该环境中的所有工具,因此我想知道是谁最初创建了$HOME/.config)
根据arch wiki,'只有XDG_RUNTIME_DIR是通过pam_systemd(8)默认设置的。用户必须根据规范显式定义其他变量。


https://wiki.archlinux.org/title/XDG_Base_Directory

但在现实中,如果你检查应用如何遵循XDG规范,我认为大部分只是在遵循逻辑,而没有检查XDG_RUNTIME_DIR。

1. 如果HOME/.clojure存在,则使用旧路径
2. 否则使用XDG规范路径,(或(getenv XDG_CONFIG_HOME)  (path HOME/.config/clojure))

在大多数发行版上,XDG_CONFIG_HOME(以及其他xdg变量)未被设置,应使用定义的默认值。这里是clj工具容易混淆的部分,因为它应直接写入my HOME/.config/clojure而不是回退到旧路径。
by
在任意系统上,在安装Clojure之前,$HOME/.clojure不会存在——所以你实际上要求Clojure CLI基于你的评论中的逻辑在所有系统上切换到XDG。

我理解错你的意思了吗?

1 个答案

0
by

问题是:Clojure CLI如何能明确知道你希望使用XDG配置选项。如果对此问题有明确的答案,我会很高兴使用它来选择这种行为。我们不会将其更改为默认设置。

另一种选择是设置一个clojure CLI特定的环境变量来执行此操作(但你必须采取这一行动)。

by
强制用户使用XDG的担忧非常明显。

每一个系统似乎都有由默认设置的不同的XDG_变量 flavors(例如在Darwin上,Nix设置了XDG_CONFIG_DIRS和XDG_DATA_DIRS)。

如果我们愿意更多地依赖XDG命名和约定,我们可以改进我们对不确定用例的覆盖。

更具体地说

            如果设置了$CLJ_CONFIG,则使用$CLJ_CONFIG(显式覆盖)
            如果有任何$XDG_*被设置,则遵循XDG约定(未设置时为$XDG_CONFIG_HOME/clojure或~/.config/clojure)——**更改**
            否则使用$HOME/.clojure(最常见)

备注:XDG_*也可能代表仅存在的7个已记录的变量








by
编辑 by
是的,谢谢。我会很高兴工作在这个补丁上。

我将按照以下说明执行:https://clojure.org/dev/dev
...