_评论人:rymndhng_
我考虑了一下内部数据结构,我认为可能可以不破坏内部数据结构来跟踪此内容。一个洞见是我们需要通过取 Clojure 源文件及其任何外部依赖项的最大修改时间来确定“已修改”的 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)]
(或 (< 时间 (.lastModified 文件))
(< 时间 (apply max (map #(.lastModified %) 文件依赖集)))
(not-every? #(.exists %) 文件依赖集))))
(defn- modified-files [tracker 文件集]
(filter #(modified? tracker %) 文件集)))