_评论者:rymndhng_
我考虑了一下内部数据结构,我认为可以在不破坏内部数据结构的情况下跟踪这些文件。洞察力在于,我们需要通过取 clojure 源文件的最后修改时间及其任何外部依赖的最大修改时间来确定 `modified` clojure 源文件。
这将需要三个更改:
1. 定义外部文件依赖关系的方式(可能是命名空间上的元数据)。例如:
(ns my.testing.ns
{:clojure.tools.namespace.files/filedeps #{"resources/foo1.properties"
"resources/foo2.properties"})
2. 在追踪器中添加一个名为 {{::files/filedeps}} 的新条目,以映射源文件 -> 其他文件。
3. 更新 `modified-files` 断言以接受 `file-deps`,大致如下所示:
(defn- modified? [tracker ^File file]
(let [filedeps (get-in tracker [::file/filedeps file])
time (::time tracker 0)]
(或(< time (.lastModified file))
(< time (apply max (map #(.lastModified %) filedeps))
(not-every? #(.exists %) filedeps)))
(defn- modified-files [tracker files]
 ;(filter #(modified? tracker %) files)