From 3e2dacc6f51901de4c8c73b1b6a39bf86cc63777 Mon Sep 17 00:00:00 2001 From: Yann Vanhalewyn Date: Thu, 23 Nov 2017 05:06:50 +0100 Subject: [PATCH 1/2] Add :ignore option to --- boot/worker/src/boot/watcher.clj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/boot/worker/src/boot/watcher.clj b/boot/worker/src/boot/watcher.clj index 671dd814..da13b51c 100644 --- a/boot/worker/src/boot/watcher.clj +++ b/boot/worker/src/boot/watcher.clj @@ -57,13 +57,14 @@ (get x)))) (defn- register-recursive - [service path events] - (when @util/*watchers?* + [service path events ignore-patterns] + (when (and @util/*watchers?* + (not-any? #(re-find % (str path)) ignore-patterns)) (util/dbug* "registering %s %s\n" path events) (register service path events) (doseq [dir (.listFiles (io/file path))] (when (.isDirectory dir) - (register-recursive service dir events))))) + (register-recursive service dir events ignore-patterns))))) (defn- new-watch-service [] (if (= "Mac OS X" (System/getProperty "os.name")) @@ -89,9 +90,9 @@ (.offer queue "changed!")) (defn- service - [queue paths] + [queue paths ignore-patterns] (let [service (new-watch-service) - doreg #(register-recursive %1 %2 [:create :modify :delete])] + doreg #(register-recursive %1 %2 [:create :modify :delete] ignore-patterns)] (doseq [path paths] (doreg service (io/file path))) (-> #(let [watch-key (take-watch-key service)] (when-let [path (and watch-key (or (.watchable watch-key) ""))] @@ -121,10 +122,9 @@ (when-let [w (@watchers k)] (.close w))) (defn make-watcher - [queue paths] + [queue paths & {:keys [ignore]}] (let [k (str (gensym)) - s (service queue paths) - fs (->> paths (mapcat (comp file-seq io/file)) (filter (memfn isFile)))] + s (service queue paths ignore)] (swap! watchers assoc k s) (send-it! queue) k)) From 414cab6f1c90fa0ee6cdde4c5ef74ebf73efc53e Mon Sep 17 00:00:00 2001 From: Yann Vanhalewyn Date: Thu, 23 Nov 2017 05:10:07 +0100 Subject: [PATCH 2/2] Pass bootignores to make-watcher --- boot/core/src/boot/core.clj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/boot/core/src/boot/core.clj b/boot/core/src/boot/core.clj index f277e051..c810a638 100644 --- a/boot/core/src/boot/core.clj +++ b/boot/core/src/boot/core.clj @@ -741,7 +741,8 @@ (let [q (LinkedBlockingQueue.) watcher (apply file/watcher! :time dirs) paths (into-array String dirs) - k (pod/with-invoke-worker (boot.watcher/make-watcher q paths))] + k (pod/with-invoke-worker + (boot.watcher/make-watcher q paths :ignore @bootignore))] (daemon (loop [ret (util/guard [(.take q)])] (when ret