1use regex::Regex;
2
3pub struct SwiftPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl SwiftPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"\.build/").unwrap(),
14 Regex::new(r"\.swiftpm/").unwrap(),
15 Regex::new(r"Packages/").unwrap(),
16 Regex::new(r"Package\.resolved").unwrap(),
17
18 Regex::new(r"\.xcodeproj/").unwrap(),
20 Regex::new(r"\.xcworkspace/").unwrap(),
21 Regex::new(r"DerivedData/").unwrap(),
22 Regex::new(r"\.xcuserstate").unwrap(),
23 Regex::new(r"\.xccheckout").unwrap(),
24 Regex::new(r"\.moved-aside").unwrap(),
25 Regex::new(r"\.xcscmblueprint").unwrap(),
26 Regex::new(r"\.xcscheme").unwrap(),
27
28 Regex::new(r"build/").unwrap(),
30 Regex::new(r"\.dSYM/").unwrap(),
31 Regex::new(r"\.app/").unwrap(),
32 Regex::new(r"\.ipa$").unwrap(),
33 Regex::new(r"\.framework/").unwrap(),
34 Regex::new(r"\.xcframework/").unwrap(),
35
36 Regex::new(r"Pods/").unwrap(),
38 Regex::new(r"Podfile\.lock").unwrap(),
39
40 Regex::new(r"Carthage/").unwrap(),
42 Regex::new(r"Cartfile\.resolved").unwrap(),
43
44 Regex::new(r"fastlane/report\.xml").unwrap(),
46 Regex::new(r"fastlane/Preview\.html").unwrap(),
47 Regex::new(r"fastlane/screenshots").unwrap(),
48 Regex::new(r"fastlane/test_output").unwrap(),
49
50 Regex::new(r"\.mobileprovision$").unwrap(),
52 Regex::new(r"\.provisionprofile$").unwrap(),
53
54 Regex::new(r"\.p12$").unwrap(),
56 Regex::new(r"\.cer$").unwrap(),
57 Regex::new(r"\.certSigningRequest$").unwrap(),
58
59 Regex::new(r"\.xcappdata/").unwrap(),
61 Regex::new(r"\.xclog$").unwrap(),
62
63 Regex::new(r"\.xcarchive/").unwrap(),
65
66 Regex::new(r"\.trace/").unwrap(),
68
69 Regex::new(r"\.playground/").unwrap(),
71
72 Regex::new(r"\.swiftmodule/").unwrap(),
74 Regex::new(r"\.swiftdoc$").unwrap(),
75 Regex::new(r"\.swiftsourceinfo$").unwrap(),
76
77 Regex::new(r"\.pch$").unwrap(),
79
80 Regex::new(r"\.mom$").unwrap(),
82 Regex::new(r"\.momd/").unwrap(),
83
84 Regex::new(r"\.nib$").unwrap(),
86
87 Regex::new(r"\.actool$").unwrap(),
89
90 Regex::new(r"\.lproj/").unwrap(),
92
93 Regex::new(r"\.docset/").unwrap(),
95
96 Regex::new(r"\.orig$").unwrap(),
98 Regex::new(r"\.rej$").unwrap(),
99
100 Regex::new(r"\.DS_Store").unwrap(),
102 Regex::new(r"\.AppleDouble").unwrap(),
103 Regex::new(r"\.LSOverride").unwrap(),
104
105 Regex::new(r"\._ ").unwrap(),
107
108 Regex::new(r"\.DocumentRevisions-V100").unwrap(),
110 Regex::new(r"\.fseventsd").unwrap(),
111 Regex::new(r"\.Spotlight-V100").unwrap(),
112 Regex::new(r"\.TemporaryItems").unwrap(),
113 Regex::new(r"\.Trashes").unwrap(),
114 Regex::new(r"\.VolumeIcon\.icns").unwrap(),
115 Regex::new(r"\.com\.apple\.timemachine\.donotpresent").unwrap(),
116
117 Regex::new(r"\.AppleDB").unwrap(),
119 Regex::new(r"\.AppleDesktop").unwrap(),
120 Regex::new(r"Network Trash Folder").unwrap(),
121 Regex::new(r"Temporary Items").unwrap(),
122 Regex::new(r"\.apdisk").unwrap(),
123
124 Regex::new(r"\.vscode/").unwrap(),
126 Regex::new(r"\.idea/").unwrap(),
127
128 Regex::new(r"\.tmp$").unwrap(),
130 Regex::new(r"\.swp$").unwrap(),
131 Regex::new(r"\.swo$").unwrap(),
132 Regex::new(r"~$").unwrap(),
133
134 Regex::new(r"\.log$").unwrap(),
136
137 Regex::new(r"\.crash$").unwrap(),
139
140 Regex::new(r"\.xcresult/").unwrap(),
142
143 Regex::new(r"\.swiftformat").unwrap(),
145
146 Regex::new(r"\.swiftlint\.yml").unwrap(),
148
149 Regex::new(r"\.tuist/").unwrap(),
151 Regex::new(r"Tuist/").unwrap(),
152
153 Regex::new(r"\.mint/").unwrap(),
155
156 Regex::new(r"\.sourcery/").unwrap(),
158
159 Regex::new(r"R\.generated\.swift").unwrap(),
161
162 Regex::new(r"\.swiftgen/").unwrap(),
164
165 Regex::new(r"docs/").unwrap(),
167
168 Regex::new(r"Dangerfile").unwrap(),
170
171 Regex::new(r"bitrise\.yml").unwrap(),
173
174 Regex::new(r"\.github/").unwrap(),
176
177 Regex::new(r"GoogleService-Info\.plist").unwrap(),
179
180 Regex::new(r"ExportOptions\.plist").unwrap(),
182
183 Regex::new(r"metadata/").unwrap(),
185
186 Regex::new(r"ci_scripts/").unwrap(),
188
189 Regex::new(r"\.playgroundbook/").unwrap(),
191
192 Regex::new(r"\.rcproject/").unwrap(),
194
195 Regex::new(r"\.mlmodel$").unwrap(),
197 Regex::new(r"\.mlmodelc/").unwrap(),
198
199 Regex::new(r"\.metal$").unwrap(),
201 Regex::new(r"\.air$").unwrap(),
202 Regex::new(r"\.metallib$").unwrap(),
203
204 Regex::new(r"\.scn$").unwrap(),
206 Regex::new(r"\.scnassets/").unwrap(),
207
208 Regex::new(r"\.sks$").unwrap(),
210
211 Regex::new(r"\.caf$").unwrap(),
213
214 Regex::new(r"\.mov$").unwrap(),
216 Regex::new(r"\.mp4$").unwrap(),
217
218 Regex::new(r"\.png$").unwrap(),
220 Regex::new(r"\.jpg$").unwrap(),
221 Regex::new(r"\.jpeg$").unwrap(),
222 Regex::new(r"\.gif$").unwrap(),
223 Regex::new(r"\.tiff$").unwrap(),
224 Regex::new(r"\.svg$").unwrap(),
225 Regex::new(r"\.pdf$").unwrap(),
226 Regex::new(r"\.eps$").unwrap(),
227
228 Regex::new(r"\.ttf$").unwrap(),
230 Regex::new(r"\.otf$").unwrap(),
231
232 Regex::new(r"\.json$").unwrap(),
234 Regex::new(r"\.plist$").unwrap(),
235 Regex::new(r"\.csv$").unwrap(),
236
237 Regex::new(r"\.bak$").unwrap(),
239 Regex::new(r"\.backup$").unwrap(),
240 ];
241
242 let cache_patterns = vec![
243 Regex::new(r"DerivedData/").unwrap(),
245 Regex::new(r"\.build/").unwrap(),
246 Regex::new(r"build/").unwrap(),
247
248 Regex::new(r"\.swiftpm/").unwrap(),
250
251 Regex::new(r"Pods/").unwrap(),
253
254 Regex::new(r"Carthage/").unwrap(),
256
257 Regex::new(r"fastlane/report\.xml").unwrap(),
259 Regex::new(r"fastlane/Preview\.html").unwrap(),
260 Regex::new(r"fastlane/screenshots").unwrap(),
261 Regex::new(r"fastlane/test_output").unwrap(),
262
263 Regex::new(r"\.xcresult/").unwrap(),
265
266 Regex::new(r"\.xcarchive/").unwrap(),
268
269 Regex::new(r"\.xcappdata/").unwrap(),
271
272 Regex::new(r"\.trace/").unwrap(),
274
275 Regex::new(r"\.log$").unwrap(),
277 Regex::new(r"\.xclog$").unwrap(),
278
279 Regex::new(r"\.crash$").unwrap(),
281
282 Regex::new(r"\.tmp$").unwrap(),
284 Regex::new(r"\.temp$").unwrap(),
285
286 Regex::new(r"\.DS_Store").unwrap(),
288 Regex::new(r"\.AppleDouble").unwrap(),
289 Regex::new(r"\.LSOverride").unwrap(),
290
291 Regex::new(r"\.vscode/").unwrap(),
293 Regex::new(r"\.idea/").unwrap(),
294
295 Regex::new(r"\.swp$").unwrap(),
297 Regex::new(r"\.swo$").unwrap(),
298 Regex::new(r"~$").unwrap(),
299
300 Regex::new(r"docs/").unwrap(),
302 Regex::new(r"\.docset/").unwrap(),
303
304 Regex::new(r"\.tuist/").unwrap(),
306
307 Regex::new(r"\.mint/").unwrap(),
309
310 Regex::new(r"\.sourcery/").unwrap(),
312
313 Regex::new(r"\.swiftgen/").unwrap(),
315
316 Regex::new(r"\.orig$").unwrap(),
318 Regex::new(r"\.rej$").unwrap(),
319 Regex::new(r"\.bak$").unwrap(),
320 Regex::new(r"\.backup$").unwrap(),
321 ];
322
323 let extensions = vec![
324 "swift".to_string(),
326
327 "m".to_string(), "mm".to_string(),
329 "h".to_string(), "hpp".to_string(),
330
331 "c".to_string(), "cpp".to_string(),
333 "cc".to_string(), "cxx".to_string(),
334
335 "swiftdeps".to_string(),
337 "swiftmodule".to_string(),
338 "swiftsourceinfo".to_string(),
339 "swiftdoc".to_string(),
340
341 "storyboard".to_string(),
343 "xib".to_string(),
344
345 "plist".to_string(),
347
348 "entitlements".to_string(),
350
351 "metal".to_string(),
353
354 "scn".to_string(),
356
357 "sks".to_string(),
359
360 "xcdatamodel".to_string(),
362 "xcdatamodeld".to_string(),
363 "mom".to_string(),
364 "momd".to_string(),
365
366 "xcmappingmodel".to_string(),
368
369 "xcassets".to_string(),
371
372 "strings".to_string(),
374 "stringsdict".to_string(),
375
376 "md".to_string(),
378 "markdown".to_string(),
379
380 "yaml".to_string(),
382 "yml".to_string(),
383 "json".to_string(),
384 "toml".to_string(),
385
386 "sh".to_string(),
388 "py".to_string(),
389 "rb".to_string(),
390
391 "p12".to_string(),
393 "cer".to_string(),
394 "mobileprovision".to_string(),
395 "provisionprofile".to_string(),
396
397 "ipa".to_string(),
399 "xcarchive".to_string(),
400
401 "playground".to_string(),
403 "playgroundbook".to_string(),
404
405 "rcproject".to_string(),
407
408 "mlmodel".to_string(),
410 "mlmodelc".to_string(),
411
412 "caf".to_string(),
414 "aiff".to_string(),
415 "wav".to_string(),
416 "mp3".to_string(),
417 "m4a".to_string(),
418
419 "mov".to_string(),
421 "mp4".to_string(),
422 "m4v".to_string(),
423 "avi".to_string(),
424
425 "png".to_string(),
427 "jpg".to_string(),
428 "jpeg".to_string(),
429 "gif".to_string(),
430 "tiff".to_string(),
431 "svg".to_string(),
432 "pdf".to_string(),
433 "eps".to_string(),
434 "heic".to_string(),
435 "heif".to_string(),
436
437 "ttf".to_string(),
439 "otf".to_string(),
440
441 "csv".to_string(),
443 "xml".to_string(),
444 "sqlite".to_string(),
445 "db".to_string(),
446
447 "log".to_string(),
449 "crash".to_string(),
450
451 "tmp".to_string(),
453 "temp".to_string(),
454
455 "bak".to_string(),
457 "backup".to_string(),
458 "orig".to_string(),
459 ];
460
461 Self {
462 external_patterns,
463 cache_patterns,
464 extensions,
465 }
466 }
467
468 pub fn get_external_patterns(&self) -> &[Regex] {
469 &self.external_patterns
470 }
471
472 pub fn get_cache_patterns(&self) -> &[Regex] {
473 &self.cache_patterns
474 }
475
476 pub fn get_extensions(&self) -> &[String] {
477 &self.extensions
478 }
479
480 pub fn get_script_names() -> Vec<&'static str> {
481 vec![
482 "Package.swift", "Package.resolved",
484
485 "Podfile", "Podfile.lock", "*.podspec",
487
488 "Cartfile", "Cartfile.resolved", "Cartfile.private",
490
491 "*.xcodeproj", "*.xcworkspace",
493 "project.pbxproj", "*.xcscheme",
494 "*.xcconfig", "*.plist",
495
496 "build.sh", "build.py", "build.rb",
498 "archive.sh", "deploy.sh", "test.sh",
499
500 "Fastfile", "Appfile", "Deliverfile",
502 "Gymfile", "Matchfile", "Precheckfile",
503 "Scanfile", "Screengrabfile", "Snapshotfile",
504
505 "Info.plist", "*.entitlements",
507 "GoogleService-Info.plist", "ExportOptions.plist",
508
509 "README.md", "CHANGELOG.md", "LICENSE",
511 "CONTRIBUTING.md", "CODE_OF_CONDUCT.md",
512
513 ".github/workflows/ios.yml", ".github/workflows/swift.yml",
515 ".travis.yml", ".gitlab-ci.yml", "circle.yml",
516 "bitrise.yml", "azure-pipelines.yml",
517
518 "ci_scripts/ci_pre_xcodebuild.sh",
520 "ci_scripts/ci_post_xcodebuild.sh",
521 "ci_scripts/ci_post_clone.sh",
522
523 ".swiftlint.yml", ".swiftformat",
525 ".swiftgen.yml", ".sourcery.yml",
526
527 "*.xctest", "TestPlans/",
529
530 "Dangerfile", "Dangerfile.swift",
532
533 "Project.swift", "Workspace.swift",
535 "Config.swift", "Setup.swift",
536
537 "Mintfile",
539
540 ".jazzy.yaml", ".jazzy.yml",
542
543 "R.generated.swift",
545
546 "swiftgen.yml",
548
549 "sourcery.yml", "*.stencil",
551
552 ".gitignore", ".gitattributes", ".gitmodules",
554
555 ".vscode/", ".idea/", ".sublime-project",
557
558 ".env", ".env.local", ".env.example",
560
561 "Dockerfile", "docker-compose.yml", ".dockerignore",
563
564 "scripts/", "bin/", "tools/",
566
567 "Assets.xcassets/", "*.xcassets",
569
570 "*.lproj/", "Localizable.strings",
572 "InfoPlist.strings", "*.stringsdict",
573
574 "*.xcdatamodel", "*.xcdatamodeld",
576 "*.xcmappingmodel",
577
578 "*.storyboard", "*.xib",
580
581 "*.metal", "*.air", "*.metallib",
583
584 "*.scn", "*.scnassets/",
586
587 "*.sks", "*.atlas/",
589
590 "*.rcproject/",
592
593 "*.mlmodel", "*.mlmodelc/",
595
596 "*.playground/", "*.playgroundbook/",
598
599 "*.caf", "*.aiff", "*.wav", "*.mp3", "*.m4a",
601
602 "*.mov", "*.mp4", "*.m4v", "*.avi",
604
605 "*.png", "*.jpg", "*.jpeg", "*.gif",
607 "*.tiff", "*.svg", "*.pdf", "*.eps",
608 "*.heic", "*.heif",
609
610 "*.ttf", "*.otf",
612
613 "*.json", "*.plist", "*.xml", "*.csv",
615 "*.sqlite", "*.db",
616
617 "*.p12", "*.cer", "*.mobileprovision",
619 "*.provisionprofile", "*.certSigningRequest",
620
621 "*.ipa", "*.xcarchive/",
623
624 "*.framework/", "*.xcframework/",
626
627 "*.a", "*.dylib",
629
630 "*.swiftmodule/", "*.swiftdoc",
632 "*.swiftsourceinfo", "*.swiftdeps",
633
634 "*.trace/",
636
637 "*.xcappdata/", "*.xclog",
639
640 "*.xcresult/",
642
643 "*.log", "*.crash",
645
646 "*.tmp", "*.temp", "*.swp", "*.swo",
648
649 "*.bak", "*.backup", "*.orig", "*.rej",
651
652 ".DS_Store", ".AppleDouble", ".LSOverride",
654 "._*", ".DocumentRevisions-V100",
655 ".fseventsd", ".Spotlight-V100",
656 ".TemporaryItems", ".Trashes",
657 ".VolumeIcon.icns",
658 ".com.apple.timemachine.donotpresent",
659 ".AppleDB", ".AppleDesktop",
660 "Network Trash Folder", "Temporary Items",
661 ".apdisk",
662 ]
663 }
664}