1use regex::Regex;
2
3pub struct PhpPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl PhpPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"vendor/").unwrap(),
14 Regex::new(r"composer\.lock").unwrap(),
15 Regex::new(r"composer\.phar").unwrap(),
16
17 Regex::new(r"\.pear/").unwrap(),
19
20 Regex::new(r"\.phar$").unwrap(),
22
23 Regex::new(r"bootstrap/cache/").unwrap(),
25 Regex::new(r"storage/app/").unwrap(),
26 Regex::new(r"storage/framework/").unwrap(),
27 Regex::new(r"storage/logs/").unwrap(),
28 Regex::new(r"public/storage/").unwrap(),
29
30 Regex::new(r"var/cache/").unwrap(),
32 Regex::new(r"var/logs/").unwrap(),
33 Regex::new(r"var/sessions/").unwrap(),
34
35 Regex::new(r"wp-content/uploads/").unwrap(),
37 Regex::new(r"wp-content/cache/").unwrap(),
38 Regex::new(r"wp-content/backup/").unwrap(),
39
40 Regex::new(r"sites/default/files/").unwrap(),
42 Regex::new(r"sites/default/private/").unwrap(),
43
44 Regex::new(r"var/cache/").unwrap(),
46 Regex::new(r"var/session/").unwrap(),
47 Regex::new(r"var/log/").unwrap(),
48 Regex::new(r"media/").unwrap(),
49
50 Regex::new(r"application/cache/").unwrap(),
52 Regex::new(r"application/logs/").unwrap(),
53
54 Regex::new(r"protected/runtime/").unwrap(),
56 Regex::new(r"assets/").unwrap(),
57
58 Regex::new(r"data/cache/").unwrap(),
60 Regex::new(r"data/logs/").unwrap(),
61
62 Regex::new(r"tmp/cache/").unwrap(),
64 Regex::new(r"tmp/logs/").unwrap(),
65 Regex::new(r"tmp/sessions/").unwrap(),
66
67 Regex::new(r"\.phpunit\.result\.cache").unwrap(),
69
70 Regex::new(r"tests/_output/").unwrap(),
72
73 Regex::new(r"behat\.yml").unwrap(),
75
76 Regex::new(r"build/").unwrap(),
78
79 Regex::new(r"\.dep/").unwrap(),
81
82 Regex::new(r"\.vscode/").unwrap(),
84 Regex::new(r"\.idea/").unwrap(),
85 Regex::new(r"\.sublime-").unwrap(),
86
87 Regex::new(r"\.DS_Store").unwrap(),
89 Regex::new(r"Thumbs\.db").unwrap(),
90
91 Regex::new(r"\.bak$").unwrap(),
93 Regex::new(r"\.swp$").unwrap(),
94 Regex::new(r"\.swo$").unwrap(),
95 Regex::new(r"~$").unwrap(),
96
97 Regex::new(r"\.log$").unwrap(),
99 Regex::new(r"error_log").unwrap(),
100
101 Regex::new(r"sess_").unwrap(),
103
104 Regex::new(r"\.tmp$").unwrap(),
106 Regex::new(r"\.temp$").unwrap(),
107
108 Regex::new(r"uploads/").unwrap(),
110
111 Regex::new(r"cache/").unwrap(),
113
114 Regex::new(r"\.env$").unwrap(),
116 Regex::new(r"\.env\.local$").unwrap(),
117
118 Regex::new(r"\.sqlite$").unwrap(),
120 Regex::new(r"\.db$").unwrap(),
121
122 Regex::new(r"\.twig\.cache").unwrap(),
124 Regex::new(r"\.smarty\.cache").unwrap(),
125
126 Regex::new(r"\.min\.js$").unwrap(),
128 Regex::new(r"\.min\.css$").unwrap(),
129
130 Regex::new(r"\.map$").unwrap(),
132
133 Regex::new(r"bower_components/").unwrap(),
135
136 Regex::new(r"node_modules/").unwrap(),
138
139 Regex::new(r"package-lock\.json").unwrap(),
141
142 Regex::new(r"yarn\.lock").unwrap(),
144
145 Regex::new(r"\.dockerignore").unwrap(),
147
148 Regex::new(r"\.vagrant/").unwrap(),
150
151 Regex::new(r"Homestead\.yaml").unwrap(),
153 Regex::new(r"Homestead\.json").unwrap(),
154
155 Regex::new(r"\.valet/").unwrap(),
157
158 Regex::new(r"\.mamp/").unwrap(),
160
161 Regex::new(r"\.xampp/").unwrap(),
163
164 Regex::new(r"\.wamp/").unwrap(),
166
167 Regex::new(r"\.phpstorm\.meta\.php").unwrap(),
169
170 Regex::new(r"nbproject/").unwrap(),
172
173 Regex::new(r"\.buildpath").unwrap(),
175 Regex::new(r"\.project").unwrap(),
176 Regex::new(r"\.settings/").unwrap(),
177
178 Regex::new(r"\.aptana/").unwrap(),
180 ];
181
182 let cache_patterns = vec![
183 Regex::new(r"vendor/").unwrap(),
185
186 Regex::new(r"bootstrap/cache/").unwrap(),
188 Regex::new(r"storage/framework/cache/").unwrap(),
189 Regex::new(r"storage/framework/sessions/").unwrap(),
190 Regex::new(r"storage/framework/views/").unwrap(),
191 Regex::new(r"var/cache/").unwrap(),
192 Regex::new(r"tmp/cache/").unwrap(),
193 Regex::new(r"application/cache/").unwrap(),
194 Regex::new(r"protected/runtime/").unwrap(),
195 Regex::new(r"data/cache/").unwrap(),
196
197 Regex::new(r"\.phpunit\.result\.cache").unwrap(),
199 Regex::new(r"tests/_output/").unwrap(),
200
201 Regex::new(r"storage/logs/").unwrap(),
203 Regex::new(r"var/logs/").unwrap(),
204 Regex::new(r"tmp/logs/").unwrap(),
205 Regex::new(r"application/logs/").unwrap(),
206 Regex::new(r"data/logs/").unwrap(),
207 Regex::new(r"\.log$").unwrap(),
208 Regex::new(r"error_log").unwrap(),
209
210 Regex::new(r"storage/framework/sessions/").unwrap(),
212 Regex::new(r"var/sessions/").unwrap(),
213 Regex::new(r"tmp/sessions/").unwrap(),
214 Regex::new(r"sess_").unwrap(),
215
216 Regex::new(r"\.tmp$").unwrap(),
218 Regex::new(r"\.temp$").unwrap(),
219
220 Regex::new(r"\.vscode/").unwrap(),
222 Regex::new(r"\.idea/").unwrap(),
223
224 Regex::new(r"\.DS_Store").unwrap(),
226 Regex::new(r"Thumbs\.db").unwrap(),
227
228 Regex::new(r"\.swp$").unwrap(),
230 Regex::new(r"\.swo$").unwrap(),
231 Regex::new(r"~$").unwrap(),
232
233 Regex::new(r"build/").unwrap(),
235
236 Regex::new(r"uploads/").unwrap(),
238
239 Regex::new(r"media/").unwrap(),
241
242 Regex::new(r"assets/").unwrap(),
244
245 Regex::new(r"public/storage/").unwrap(),
247
248 Regex::new(r"\.twig\.cache").unwrap(),
250 Regex::new(r"\.smarty\.cache").unwrap(),
251
252 Regex::new(r"node_modules/").unwrap(),
254 Regex::new(r"bower_components/").unwrap(),
255
256 Regex::new(r"\.min\.js$").unwrap(),
258 Regex::new(r"\.min\.css$").unwrap(),
259
260 Regex::new(r"\.map$").unwrap(),
262 ];
263
264 let extensions = vec![
265 "php".to_string(), "php3".to_string(), "php4".to_string(),
267 "php5".to_string(), "php7".to_string(), "php8".to_string(),
268 "phtml".to_string(), "phps".to_string(),
269
270 "phar".to_string(),
272
273 "twig".to_string(), "blade".to_string(),
275 "smarty".to_string(), "tpl".to_string(),
276
277 "ini".to_string(), "conf".to_string(),
279
280 "yml".to_string(), "yaml".to_string(),
282
283 "json".to_string(),
285
286 "xml".to_string(),
288
289 "md".to_string(), "markdown".to_string(),
291
292 "sql".to_string(),
294
295 "html".to_string(), "htm".to_string(),
297 "css".to_string(), "js".to_string(),
298
299 "env".to_string(),
301
302 "lock".to_string(),
304
305 "log".to_string(),
307
308 "bak".to_string(), "backup".to_string(),
310 ];
311
312 Self {
313 external_patterns,
314 cache_patterns,
315 extensions,
316 }
317 }
318
319 pub fn get_external_patterns(&self) -> &[Regex] {
320 &self.external_patterns
321 }
322
323 pub fn get_cache_patterns(&self) -> &[Regex] {
324 &self.cache_patterns
325 }
326
327 pub fn get_extensions(&self) -> &[String] {
328 &self.extensions
329 }
330
331 pub fn get_script_names() -> Vec<&'static str> {
332 vec![
333 "composer.json", "composer.lock", "composer.phar",
335
336 "php.ini", ".htaccess", "web.config",
338
339 "artisan", ".env", ".env.example", ".env.local",
341 "server.php", "webpack.mix.js", "vite.config.js",
342
343 "symfony", "console", "bin/console",
345
346 "wp-config.php", "wp-config-sample.php",
348 "wp-load.php", "wp-settings.php",
349 "functions.php", "style.css", "index.php",
350
351 "settings.php", "settings.local.php",
353 "services.yml", "routing.yml",
354
355 "app/etc/config.xml", "app/etc/local.xml",
357 "index.php", "cron.php",
358
359 "index.php", "config/config.php",
361 "config/database.php", "config/routes.php",
362
363 "index.php", "protected/config/main.php",
365 "protected/config/console.php",
366
367 "index.php", "application/configs/application.ini",
369 "public/index.php",
370
371 "index.php", "app/Config/core.php",
373 "app/Config/database.php",
374
375 "build.xml", "phing.xml", "Makefile",
377 "gulpfile.js", "Gruntfile.js",
378
379 "phpunit.xml", "phpunit.xml.dist",
381 "codeception.yml", "behat.yml",
382 ".phpunit.result.cache",
383
384 ".php_cs", ".php_cs.dist", "phpcs.xml",
386 "phpcs.xml.dist", "phpmd.xml",
387 ".phpstan.neon", "psalm.xml",
388
389 "README.md", "CHANGELOG.md", "LICENSE",
391 "CONTRIBUTING.md", "phpdoc.xml",
392
393 ".github/workflows/php.yml", ".travis.yml",
395 ".gitlab-ci.yml", "circle.yml", "appveyor.yml",
396
397 "Dockerfile", "docker-compose.yml", ".dockerignore",
399
400 "Vagrantfile", ".vagrant/",
402
403 "deploy.php", "Capfile", "config/deploy.rb",
405
406 ".env", ".env.local", ".env.example",
408 ".env.development", ".env.production", ".env.testing",
409
410 "package.json", "package-lock.json", "yarn.lock",
412 "bower.json", ".bowerrc",
413
414 "webpack.config.js", "webpack.mix.js",
416 "vite.config.js", "rollup.config.js",
417
418 ".vscode/", ".idea/", ".sublime-project",
420
421 ".gitignore", ".gitattributes", ".gitmodules",
423
424 ".editorconfig", ".eslintrc", ".prettierrc",
426
427 ".htaccess", ".htpasswd", "robots.txt",
429
430 "schema.sql", "migrations/", "seeds/",
432
433 "api.php", "routes/api.php", "swagger.json",
435 "openapi.json", "postman.json",
436
437 "redis.conf", "memcached.conf",
439
440 "nginx.conf", "apache.conf", ".htaccess",
442
443 "ssl.conf", "certificate.pem", "private.key",
445
446 "newrelic.ini", "blackfire.ini",
448
449 "monolog.yml", "log4php.xml",
451
452 "locale/", "lang/", "resources/lang/",
454
455 "public/", "assets/", "resources/",
457
458 "storage/", "var/", "tmp/", "temp/",
460
461 "uploads/", "files/", "media/",
463
464 "cache/", "tmp/cache/", "var/cache/",
466
467 "sessions/", "tmp/sessions/", "var/sessions/",
469
470 "logs/", "log/", "var/logs/",
472
473 "backups/", "backup/", "dumps/",
475
476 "vendor/", "lib/", "libraries/",
478
479 "plugins/", "modules/", "extensions/",
481
482 "themes/", "templates/", "views/",
484
485 "config/", "configs/", "configuration/",
487
488 "scripts/", "bin/", "tools/",
490
491 "tests/", "test/", "spec/",
493
494 "fixtures/", "seeds/", "factories/",
496
497 "mocks/", "stubs/", "fakes/",
499
500 "docs/", "doc/", "documentation/",
502
503 "examples/", "samples/", "demo/",
505
506 "build/", "dist/", "release/",
508
509 "deploy/", "deployment/", "releases/",
511 ]
512 }
513}