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. 否则使用 XFG 规范(或 (getenv XDG_CONFIG_HOME)  (path HOME/.config/clojure))

XDG_CONFIG_HOME(以及其他 xdg 变量)在大多数发行版上未设置,并且应该使用已定义的默认值。这里是 clj 工具感到困惑的部分,因为它应该直接写入我的 HOME/.config/clojure,而不是回退到旧路径。
by
在一个任意系统上,在安装 Clojure 之前,$HOME/.clojure 将不存在 - 因此,根据你评论中的逻辑,你实际上是要求 Clojure CLI 在所有系统上切换到 XDG。

我理解错你的意思了吗?

1 个答案

0
by

问题继续是:Clojure CLI 如何明确知道您想使用 XDG 配置选项。如果对这个问题的回答是明确的,我将很高兴使用那个来选择这个行为。我们不会将其改为默认值。

另一个选项是在 Clojure CLI 中有一个特定的环境变量,您可以将它设置为执行该操作(但您必须采取那个行动)。

by
强制用户使用 XDG 的担忧是很明显的。

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

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

更具体地说

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

注意:XDG_* 也可能仅指 7 个已记录的变量
我在思考并阅读关于这个规范(xdg 基础目录)越多,我就越觉得这更多是应用选择是否遵循规范的问题,系统在这方面没有责任。

因此,添加标志的想法可能是可行的。这样做可以让用户选择是否在安装 Clojure CLI 时完全支持 XDG,同时也可以让包管理器(例如 Debian 的 Clojure 软件包维护者)进行类似的选择。类似于 `--prefix` 标志。

以下是这个想法的一个提交示例:在代码中更容易解释:https://github.com/jgomo3/brew-install/commit/bfae7f15291826c0a27e2a76d42a5275493c7da2

一个重要的事情是,我们不打算改变当前的行为。

注意:代码还没有经过测试,这也不是一个拉取请求。它只是为了支持这个评论。
在安装时进行选择是一个好主意。如果您对这个补丁感兴趣,我会很高兴让您来完成。

编辑了
是的,谢谢。我很乐意对这个补丁进行修改。

我将按照以下说明操作:https://clojure.org/dev/dev
...