1use regex::Regex;
2
3pub struct RubyPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl RubyPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"\.bundle/").unwrap(),
14 Regex::new(r"vendor/bundle/").unwrap(),
15 Regex::new(r"\.gem$").unwrap(),
16 Regex::new(r"Gemfile\.lock").unwrap(),
17
18 Regex::new(r"\.gem/").unwrap(),
20 Regex::new(r"gems/").unwrap(),
21
22 Regex::new(r"log/").unwrap(),
24 Regex::new(r"tmp/").unwrap(),
25 Regex::new(r"storage/").unwrap(),
26 Regex::new(r"public/assets/").unwrap(),
27 Regex::new(r"public/packs/").unwrap(),
28 Regex::new(r"public/uploads/").unwrap(),
29
30 Regex::new(r"coverage/").unwrap(),
32
33 Regex::new(r"spec/reports/").unwrap(),
35
36 Regex::new(r"\.yardoc/").unwrap(),
38 Regex::new(r"doc/").unwrap(),
39
40 Regex::new(r"\.capistrano/").unwrap(),
42
43 Regex::new(r"\.byebug_history").unwrap(),
45
46 Regex::new(r"\.irb_history").unwrap(),
48
49 Regex::new(r"\.pry_history").unwrap(),
51
52 Regex::new(r"\.rvmrc").unwrap(),
54
55 Regex::new(r"\.ruby-version").unwrap(),
57 Regex::new(r"\.ruby-gemset").unwrap(),
58
59 Regex::new(r"\.powrc").unwrap(),
61 Regex::new(r"\.powder").unwrap(),
62
63 Regex::new(r"\.sass-cache/").unwrap(),
65
66 Regex::new(r"capybara-").unwrap(),
68
69 Regex::new(r"\.spring/").unwrap(),
71
72 Regex::new(r"\.bootsnap-").unwrap(),
74
75 Regex::new(r"\.listen_test").unwrap(),
77
78 Regex::new(r"\.rerun\.pid").unwrap(),
80
81 Regex::new(r"\.spork\.pid").unwrap(),
83
84 Regex::new(r"\.guard_history").unwrap(),
86
87 Regex::new(r"solr/").unwrap(),
89
90 Regex::new(r"elasticsearch/").unwrap(),
92
93 Regex::new(r"dump\.rdb").unwrap(),
95
96 Regex::new(r"sidekiq\.pid").unwrap(),
98
99 Regex::new(r"puma\.pid").unwrap(),
101
102 Regex::new(r"unicorn\.pid").unwrap(),
104
105 Regex::new(r"thin\.pid").unwrap(),
107
108 Regex::new(r"passenger\.").unwrap(),
110
111 Regex::new(r"\.foreman").unwrap(),
113
114 Regex::new(r"\.slugignore").unwrap(),
116
117 Regex::new(r"\.vagrant/").unwrap(),
119
120 Regex::new(r"\.dockerignore").unwrap(),
122
123 Regex::new(r"\.vscode/").unwrap(),
125 Regex::new(r"\.idea/").unwrap(),
126 Regex::new(r"\.sublime-").unwrap(),
127
128 Regex::new(r"\.DS_Store").unwrap(),
130 Regex::new(r"Thumbs\.db").unwrap(),
131
132 Regex::new(r"\.bak$").unwrap(),
134 Regex::new(r"\.swp$").unwrap(),
135 Regex::new(r"\.swo$").unwrap(),
136 Regex::new(r"~$").unwrap(),
137 ];
138
139 let cache_patterns = vec![
140 Regex::new(r"\.bundle/").unwrap(),
142 Regex::new(r"vendor/bundle/").unwrap(),
143
144 Regex::new(r"\.gem/").unwrap(),
146
147 Regex::new(r"tmp/cache/").unwrap(),
149 Regex::new(r"tmp/pids/").unwrap(),
150 Regex::new(r"tmp/sessions/").unwrap(),
151 Regex::new(r"tmp/sockets/").unwrap(),
152
153 Regex::new(r"public/assets/").unwrap(),
155 Regex::new(r"public/packs/").unwrap(),
156
157 Regex::new(r"coverage/").unwrap(),
159 Regex::new(r"spec/reports/").unwrap(),
160
161 Regex::new(r"\.yardoc/").unwrap(),
163 Regex::new(r"doc/").unwrap(),
164
165 Regex::new(r"\.sass-cache/").unwrap(),
167
168 Regex::new(r"\.spring/").unwrap(),
170
171 Regex::new(r"\.bootsnap-").unwrap(),
173
174 Regex::new(r"log/").unwrap(),
176
177 Regex::new(r"tmp/").unwrap(),
179
180 Regex::new(r"\.vscode/").unwrap(),
182 Regex::new(r"\.idea/").unwrap(),
183
184 Regex::new(r"\.DS_Store").unwrap(),
186 Regex::new(r"Thumbs\.db").unwrap(),
187
188 Regex::new(r"\.swp$").unwrap(),
190 Regex::new(r"\.swo$").unwrap(),
191 Regex::new(r"~$").unwrap(),
192 ];
193
194 let extensions = vec![
195 "rb".to_string(), "rbw".to_string(),
197
198 "rake".to_string(),
200
201 "gemspec".to_string(),
203
204 "ru".to_string(),
206
207 "erb".to_string(), "rhtml".to_string(),
209
210 "haml".to_string(),
212
213 "slim".to_string(),
215
216 "liquid".to_string(),
218
219 "rdoc".to_string(),
221
222 "yml".to_string(), "yaml".to_string(),
224
225 "json".to_string(),
227
228 "md".to_string(), "markdown".to_string(),
230
231 "rbx".to_string(),
233
234 "thor".to_string(),
236
237 "cap".to_string(),
239
240 "prawn".to_string(),
242
243 "builder".to_string(),
245
246 "rabl".to_string(),
248
249 "jbuilder".to_string(),
251 ];
252
253 Self {
254 external_patterns,
255 cache_patterns,
256 extensions,
257 }
258 }
259
260 pub fn get_external_patterns(&self) -> &[Regex] {
261 &self.external_patterns
262 }
263
264 pub fn get_cache_patterns(&self) -> &[Regex] {
265 &self.cache_patterns
266 }
267
268 pub fn get_extensions(&self) -> &[String] {
269 &self.extensions
270 }
271
272 pub fn get_script_names() -> Vec<&'static str> {
273 vec![
274 "Gemfile", "Gemfile.lock", "*.gemspec", "Rakefile",
276 "config.ru", "Capfile", "Guardfile", "Procfile",
277
278 "application.rb", "environment.rb", "boot.rb",
280 "routes.rb", "database.yml", "secrets.yml",
281 "application.yml", "cable.yml", "storage.yml",
282
283 "config/application.rb", "config/environment.rb",
285 "config/boot.rb", "config/routes.rb",
286 "config/database.yml", "config/secrets.yml",
287
288 "config/environments/development.rb",
290 "config/environments/production.rb",
291 "config/environments/test.rb",
292
293 "config/initializers/", "config/locales/",
295
296 "db/schema.rb", "db/seeds.rb", "db/migrate/",
298
299 "spec/spec_helper.rb", "spec/rails_helper.rb",
301 "test/test_helper.rb", ".rspec", ".rspec-local",
302
303 ".simplecov", "coverage/",
305
306 "config/deploy.rb", "config/deploy/",
308 "Capfile", ".caprc",
309
310 ".bundle/config", "vendor/bundle/",
312
313 ".ruby-version", ".ruby-gemset", ".rvmrc",
315
316 ".yardopts", ".document", "README.md",
318 "CHANGELOG.md", "LICENSE", "CONTRIBUTING.md",
319
320 ".github/workflows/ruby.yml", ".travis.yml",
322 ".gitlab-ci.yml", "circle.yml", "appveyor.yml",
323
324 ".rubocop.yml", ".reek.yml", ".inch.yml",
326 ".codeclimate.yml", ".hound.yml",
327
328 "Dockerfile", "docker-compose.yml", ".dockerignore",
330
331 ".slugignore", "app.json", "Procfile.dev",
333
334 ".env", ".env.local", ".env.development",
336 ".env.production", ".env.test", ".env.example",
337
338 ".vscode/", ".idea/", ".sublime-project",
340
341 ".gitignore", ".gitattributes", ".gitmodules",
343
344 "yarn.lock", "package.json", "package-lock.json",
346
347 "app/assets/", "vendor/assets/", "lib/assets/",
349
350 "app/views/", "app/helpers/",
352
353 "app/controllers/", "app/models/",
355
356 "app/services/", "app/jobs/", "app/mailers/",
358
359 "app/concerns/", "app/decorators/",
361
362 "app/policies/", "app/validators/",
364
365 "app/serializers/", "app/presenters/",
367
368 "app/workers/", "app/channels/",
370
371 "lib/", "lib/tasks/", "lib/generators/",
373
374 "engines/", "gems/", "vendor/gems/",
376
377 "public/", "public/assets/", "public/uploads/",
379
380 "storage/", "tmp/storage/",
382
383 "log/", "tmp/",
385
386 "bin/", "script/", "exe/",
388
389 "config/locales/", "locale/",
391
392 "spec/fixtures/", "test/fixtures/",
394
395 "spec/factories/", "test/factories/",
397
398 "spec/support/", "test/support/",
400
401 "features/", "spec/features/",
403
404 "spec/integration/", "test/integration/",
406
407 "spec/system/", "test/system/",
409
410 "spec/requests/", "test/requests/",
412
413 "spec/controllers/", "test/controllers/",
415
416 "spec/models/", "test/models/",
418
419 "spec/views/", "test/views/",
421
422 "spec/helpers/", "test/helpers/",
424
425 "spec/mailers/", "test/mailers/",
427
428 "spec/jobs/", "test/jobs/",
430
431 "spec/channels/", "test/channels/",
433
434 "spec/routing/", "test/routing/",
436 ]
437 }
438}