1use regex::Regex;
2
3pub struct ZigPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl ZigPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"zig-cache/").unwrap(),
14 Regex::new(r"zig-out/").unwrap(),
15
16 Regex::new(r"\.o$").unwrap(),
18 Regex::new(r"\.obj$").unwrap(),
19 Regex::new(r"\.lib$").unwrap(),
20 Regex::new(r"\.a$").unwrap(),
21 Regex::new(r"\.so$").unwrap(),
22 Regex::new(r"\.dylib$").unwrap(),
23 Regex::new(r"\.dll$").unwrap(),
24 Regex::new(r"\.exe$").unwrap(),
25
26 Regex::new(r"\.bc$").unwrap(),
28 Regex::new(r"\.ll$").unwrap(),
29
30 Regex::new(r"\.wasm$").unwrap(),
32
33 Regex::new(r"\.pdb$").unwrap(),
35 Regex::new(r"\.dSYM/").unwrap(),
36
37 Regex::new(r"\.tmp/").unwrap(),
39 Regex::new(r"tmp/").unwrap(),
40 Regex::new(r"\.swp$").unwrap(),
41 Regex::new(r"\.swo$").unwrap(),
42 Regex::new(r"~$").unwrap(),
43 ];
44
45 let cache_patterns = vec![
46 Regex::new(r"zig-cache/").unwrap(),
48 Regex::new(r"zig-out/").unwrap(),
49
50 Regex::new(r"\.o$").unwrap(),
52 Regex::new(r"\.obj$").unwrap(),
53 ];
54
55 let extensions = vec![
56 "zig".to_string(),
58
59 "zon".to_string(),
61
62 "s".to_string(),
64 "asm".to_string(),
65
66 "c".to_string(),
68 "h".to_string(),
69 "cpp".to_string(),
70 "hpp".to_string(),
71
72 "json".to_string(),
74 "yaml".to_string(),
75 "yml".to_string(),
76 "toml".to_string(),
77
78 "md".to_string(),
80 "rst".to_string(),
81 "txt".to_string(),
82
83 "sh".to_string(),
85
86 "wat".to_string(),
88 "wast".to_string(),
89 ];
90
91 Self {
92 external_patterns,
93 cache_patterns,
94 extensions,
95 }
96 }
97
98 pub fn get_external_patterns(&self) -> &[Regex] {
99 &self.external_patterns
100 }
101
102 pub fn get_cache_patterns(&self) -> &[Regex] {
103 &self.cache_patterns
104 }
105
106 pub fn get_extensions(&self) -> &[String] {
107 &self.extensions
108 }
109
110 pub fn get_script_names() -> Vec<&'static str> {
111 vec![
112 "build.zig", "build.zig.zon",
114
115 "main.zig", "src/main.zig",
117
118 "test.zig", "tests.zig",
120
121 "lib.zig", "root.zig",
123
124 "Makefile", "makefile", "build.sh",
126
127 "README.md", "CHANGELOG.md", "LICENSE",
129
130 ".github/workflows/zig.yml",
132 ".travis.yml", "appveyor.yml",
133 "circle.yml", ".circleci/config.yml",
134
135 ".gitignore", ".gitattributes",
137
138 "Dockerfile", "docker-compose.yml",
140
141 ".env", ".env.example",
143
144 "config.zig", "settings.zig",
146
147 "utils.zig", "helpers.zig", "common.zig",
149
150 "example.zig", "examples.zig",
152
153 "bench.zig", "benchmarks.zig",
155
156 "linker.ld", "memory.x",
158
159 "cross.zig", "target.zig",
161 ]
162 }
163}