Skip to content

Commit 504e796

Browse files
author
Stuart Sierra
committed
c.t.n.dir: add scan-dirs/scan-files with platform
Deprecate 'scan' and 'scan-all', replace with 'scan-dirs' and 'scan-files' taking optional argument for clj/cljs platform.
1 parent 2d1bf02 commit 504e796

File tree

1 file changed

+68
-21
lines changed
  • src/main/clojure/clojure/tools/namespace

1 file changed

+68
-21
lines changed

src/main/clojure/clojure/tools/namespace/dir.clj

Lines changed: 68 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,104 @@
1111
file-modification timestamps"}
1212
clojure.tools.namespace.dir
1313
(:require [clojure.tools.namespace.file :as file]
14+
[clojure.tools.namespace.find :as find]
1415
[clojure.tools.namespace.track :as track]
1516
[clojure.java.classpath :refer [classpath-directories]]
1617
[clojure.java.io :as io]
1718
[clojure.set :as set]
1819
[clojure.string :as string])
1920
(:import (java.io File) (java.util.regex Pattern)))
2021

21-
(defn- find-files [dirs]
22+
(defn- find-files [dirs platform]
2223
(->> dirs
2324
(map io/file)
2425
(filter #(.exists ^File %))
25-
(mapcat file-seq)
26-
(filter file/clojure-file?)
27-
(map #(.getCanonicalFile ^File %))))
26+
(mapcat #(find/find-sources-in-dir % platform))))
2827

2928
(defn- modified-files [tracker files]
3029
(filter #(< (::time tracker 0) (.lastModified ^File %)) files))
3130

3231
(defn- deleted-files [tracker files]
3332
(set/difference (::files tracker #{}) (set files)))
3433

35-
(defn- update-files [tracker deleted modified]
34+
(defn- update-files [tracker deleted modified {:keys [read-opts]}]
3635
(let [now (System/currentTimeMillis)]
3736
(-> tracker
3837
(update-in [::files] #(if % (apply disj % deleted) #{}))
3938
(file/remove-files deleted)
4039
(update-in [::files] into modified)
41-
(file/add-files modified)
40+
(file/add-files modified read-opts)
4241
(assoc ::time now))))
4342

44-
(defn scan
45-
"Scans directories for files which have changed since the last time
46-
'scan' was run; update the dependency tracker with
43+
(defn scan-files
44+
"Scans files to find those which have changed since the last time
45+
'scan-files' was run; updates the dependency tracker with
4746
new/changed/deleted files.
4847
48+
files is the collection of files to scan.
49+
50+
Optional third argument is map of options:
51+
52+
:platform Either clj (default) or cljs, both defined in
53+
clojure.tools.namespace.find, controls reader options for
54+
parsing files.
55+
56+
:add-all? If true, assumes all extant files are modified regardless
57+
of filesystem timestamps."
58+
{:added "0.3.0"}
59+
([tracker files] (scan-files tracker files nil))
60+
([tracker files {:keys [platform add-all?]}]
61+
(let [deleted (seq (deleted-files tracker files))
62+
modified (if add-all?
63+
files
64+
(seq (modified-files tracker files)))]
65+
(if (or deleted modified)
66+
(update-files tracker deleted modified platform)
67+
tracker))))
68+
69+
(defn scan-dirs
70+
"Scans directories for files which have changed since the last time
71+
'scan-dirs' or 'scan-files' was run; updates the dependency tracker
72+
with new/changed/deleted files.
73+
74+
dirs is the collection of directories to scan, defaults to all
75+
directories on Clojure's classpath.
76+
77+
Optional third argument is map of options:
78+
79+
:platform Either clj (default) or cljs, both defined in
80+
clojure.tools.namespace.find, controls file extensions
81+
and reader options.
82+
83+
:add-all? If true, assumes all extant files are modified regardless
84+
of filesystem timestamps."
85+
{:added "0.3.0"}
86+
([tracker] (scan-dirs tracker nil nil))
87+
([tracker dirs] (scan-dirs tracker dirs nil))
88+
([tracker dirs {:keys [platform add-all?] :as options}]
89+
(let [ds (or (seq dirs) (classpath-directories))]
90+
(scan-files tracker (find-files ds platform) options))))
91+
92+
(defn scan
93+
"DEPRECATED: replaced by scan-dirs.
94+
95+
Scans directories for Clojure (.clj, .cljc) source files which have
96+
changed since the last time 'scan' was run; update the dependency
97+
tracker with new/changed/deleted files.
98+
4999
If no dirs given, defaults to all directories on the classpath."
100+
{:added "0.2.0"
101+
:deprecated "0.3.0"}
50102
[tracker & dirs]
51-
(let [ds (or (seq dirs) (classpath-directories))
52-
files (find-files ds)
53-
deleted (seq (deleted-files tracker files))
54-
modified (seq (modified-files tracker files))]
55-
(if (or deleted modified)
56-
(update-files tracker deleted modified)
57-
tracker)))
103+
(scan-dirs tracker dirs {:platform find/clj}))
58104

59105
(defn scan-all
60-
"Scans directories for all Clojure source files and updates the
106+
"DEPRECATED: replaced by scan-dirs.
107+
108+
Scans directories for all Clojure source files and updates the
61109
dependency tracker to reload files. If no dirs given, defaults to
62110
all directories on the classpath."
111+
{:added "0.2.0"
112+
:deprecated "0.3.0"}
63113
[tracker & dirs]
64-
(let [ds (or (seq dirs) (classpath-directories))
65-
files (find-files ds)
66-
deleted (seq (deleted-files tracker files))]
67-
(update-files tracker deleted files)))
114+
(scan-dirs tracker dirs {:platform find/clj :add-all? true}))

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy