请在 2024 年 Clojure 状态调查 中分享您的看法!

欢迎!请查看 关于 页面了解此作品的一些更多信息。

+1
tools.deps
重新标记

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

警告:已经弃用了项目外部路径的使用,请移除:资源

一般来说,提醒关于外部依赖是个好主意,如果 :paths 是例如 ["../untracked-src" "/tmp/misc"] 这样的,我很乐意看到这个警告。

但在这种情况下,我的构建会将中间结果缓存到 /tmp(作为 tmpfs 挂载以提高速度等)并通过项目本地符号链接引用它们,我没有预料到 TDA 会将这些与本地目录区分开来。

假设 deps.edn 是这样的:

{:paths ["resources"]}

然后资源是一个符号链接

resources -> /tmp/resources.FlkJvG

那么就不希望看到这个警告。

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

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