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

欢迎!请参阅关于页面了解更多关于如何使用本站的信息。

+1 点赞
tools.deps
重标记

如果 :paths 包含一个指向项目外部的本地符号链接,TDA 会打印类似如下警告

警告:已在项目中外部使用 :paths 已过时,请删除:resources

通常,警告外部依赖是一个好主意,如果 :paths 是比如 ["../untracked-src" "/tmp/misc"],我很乐意看到这样的警告。

但在此情况下,我的构建正在将中间结果缓存到 /tmp 上(包括用作 tmpfs 提高速度等因素),并通过项目本地符号链接引用这些结果,而我没有期望 TDA 会区分本地目录和符号链接。

例如 deps.edn

{:paths ["resources"]}

并且 resources 是一个符号链接

resources -> /tmp/resources.FlkJvG

那么最好不显示此警告。

看起来:paths 验证器在检查路径是否外部之前会将符号链接遍历为规范路径。也许它可以被放宽,以在不遍历符号链接的情况下标准化路径,例如

(in-ns 'clojure.tools.deps.alpha.util.dir)

(defn normalize
  "Make normalized File in terms of the current directory context without following symlinks.
  f may be either absolute or relative."
  ^File [^File f]
  (-> (if (.isAbsolute f)
          f
        (jio/file *the-dir* f))
      .toPath
      .normalize
      .toFile))

;; and modify `sub-path?' to use `normalize' instead of `canonicalize'.

1 答案

0 点赞
...