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?如果不是,那么如果命令行是新用户账户中第一个运行的工具怎么办 -- 它找不到$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)  路径 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个已文档化的变量
by
越想越多,读了这个规范(xdg基本目录)后,我觉得这更多是应用的选择是否遵循规范的问题,系统在这方面没有责任。

因此,添加一个标志的想法可能是可行的方式。这给了用户选择是否在安装Clojure CLI时完全支持或不支持XDG的选项,同时也给软件包管理器(例如Debian Clojure包维护者)。类似于`--prefix`标志。

以下是一个提交中的想法:代码中表示更加清晰:https://github.com/jgomo3/brew-install/commit/bfae7f15291826c0a27e2a76d42a5275493c7da2

一个重要的事情是,这个想法 není 为了改变当前的行为。

注意:代码未经测试,不是Pull Request。这只是支持这个评论。
by
在安装时选择是一个好主意。如果你有兴趣为这个问题编写补丁,我将很高兴让你这样做。

编辑了
是的,谢谢。我很乐意处理补丁。

我将遵循以下说明: https://clojure.org/dev/dev
...