1use regex::Regex;
2
3pub struct ClojurePatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl ClojurePatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"target/").unwrap(),
14 Regex::new(r"\.lein-deps-sum").unwrap(),
15 Regex::new(r"\.lein-repl-history").unwrap(),
16 Regex::new(r"\.lein-failures").unwrap(),
17 Regex::new(r"\.nrepl-port").unwrap(),
18
19 Regex::new(r"\.boot/").unwrap(),
21 Regex::new(r"boot\.properties").unwrap(),
22
23 Regex::new(r"\.cpcache/").unwrap(),
25
26 Regex::new(r"\.shadow-cljs/").unwrap(),
28 Regex::new(r"shadow-cljs\.edn").unwrap(),
29
30 Regex::new(r"figwheel_server\.log").unwrap(),
32 Regex::new(r"\.figwheel/").unwrap(),
33
34 Regex::new(r"\.cljs_rhino_repl/").unwrap(),
36 Regex::new(r"out/").unwrap(),
37 Regex::new(r"resources/public/js/").unwrap(),
38
39 Regex::new(r"\.class$").unwrap(),
41 Regex::new(r"\.jar$").unwrap(),
42
43 Regex::new(r"\.rebel_readline_history").unwrap(),
45
46 Regex::new(r"\.tmp/").unwrap(),
48 Regex::new(r"tmp/").unwrap(),
49 Regex::new(r"\.swp$").unwrap(),
50 Regex::new(r"\.swo$").unwrap(),
51 Regex::new(r"~$").unwrap(),
52 ];
53
54 let cache_patterns = vec![
55 Regex::new(r"target/").unwrap(),
57 Regex::new(r"\.lein-").unwrap(),
58
59 Regex::new(r"\.boot/").unwrap(),
61
62 Regex::new(r"\.cpcache/").unwrap(),
64
65 Regex::new(r"\.shadow-cljs/").unwrap(),
67
68 Regex::new(r"\.figwheel/").unwrap(),
70
71 Regex::new(r"out/").unwrap(),
73 ];
74
75 let extensions = vec![
76 "clj".to_string(),
78
79 "cljs".to_string(),
81
82 "cljc".to_string(),
84
85 "edn".to_string(),
87
88 "boot".to_string(),
90
91 "json".to_string(),
93 "yaml".to_string(),
94 "yml".to_string(),
95
96 "md".to_string(),
98 "rst".to_string(),
99 "txt".to_string(),
100
101 "html".to_string(),
103 "css".to_string(),
104 "js".to_string(),
105
106 "sh".to_string(),
108
109 "java".to_string(),
111 ];
112
113 Self {
114 external_patterns,
115 cache_patterns,
116 extensions,
117 }
118 }
119
120 pub fn get_external_patterns(&self) -> &[Regex] {
121 &self.external_patterns
122 }
123
124 pub fn get_cache_patterns(&self) -> &[Regex] {
125 &self.cache_patterns
126 }
127
128 pub fn get_extensions(&self) -> &[String] {
129 &self.extensions
130 }
131
132 pub fn get_script_names() -> Vec<&'static str> {
133 vec![
134 "project.clj", "profiles.clj",
136
137 "deps.edn", "bb.edn",
139
140 "build.boot", "boot.properties",
142
143 "shadow-cljs.edn",
145
146 "figwheel.edn", "figwheel-main.edn",
148
149 "bb.edn", "babashka.edn",
151
152 "core.clj", "main.clj",
154
155 "test.clj", "tests.clj",
157
158 "Makefile", "makefile", "build.sh",
160
161 "README.md", "CHANGELOG.md", "LICENSE",
163
164 ".github/workflows/clojure.yml",
166 ".travis.yml", "appveyor.yml",
167 "circle.yml", ".circleci/config.yml",
168
169 ".gitignore", ".gitattributes",
171
172 "Dockerfile", "docker-compose.yml",
174
175 ".env", ".env.example",
177
178 ".nrepl-port", ".rebel_readline_history",
180
181 "user.clj", "dev.clj",
183
184 "handler.clj", "routes.clj", "middleware.clj",
186
187 "db.clj", "schema.clj", "migrations.clj",
189
190 "config.clj", "settings.clj",
192
193 "utils.clj", "helpers.clj", "common.clj",
195
196 "example.clj", "examples.clj",
198
199 "bench.clj", "benchmarks.clj",
201 ]
202 }
203}