1use regex::Regex;
2
3pub struct RustPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl RustPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"target/").unwrap(),
14 Regex::new(r"Cargo\.lock").unwrap(),
15
16 Regex::new(r"\.cargo/").unwrap(),
18 Regex::new(r"registry/").unwrap(),
19 Regex::new(r"git/").unwrap(),
20
21 Regex::new(r"deps/").unwrap(),
23 Regex::new(r"incremental/").unwrap(),
24 Regex::new(r"fingerprint/").unwrap(),
25
26 Regex::new(r"target/debug/").unwrap(),
28 Regex::new(r"target/release/").unwrap(),
29 Regex::new(r"target/x86_64-").unwrap(),
30 Regex::new(r"target/aarch64-").unwrap(),
31 Regex::new(r"target/armv7-").unwrap(),
32 Regex::new(r"target/i686-").unwrap(),
33 Regex::new(r"target/wasm32-").unwrap(),
34 Regex::new(r"target/thumbv").unwrap(),
35
36 Regex::new(r"target/.*-linux-").unwrap(),
38 Regex::new(r"target/.*-windows-").unwrap(),
39 Regex::new(r"target/.*-darwin").unwrap(),
40 Regex::new(r"target/.*-android").unwrap(),
41 Regex::new(r"target/.*-ios").unwrap(),
42
43 Regex::new(r"\.exe$").unwrap(),
45 Regex::new(r"\.dll$").unwrap(),
46 Regex::new(r"\.so$").unwrap(),
47 Regex::new(r"\.dylib$").unwrap(),
48 Regex::new(r"\.a$").unwrap(),
49 Regex::new(r"\.lib$").unwrap(),
50 Regex::new(r"\.rlib$").unwrap(),
51 Regex::new(r"\.pdb$").unwrap(),
52 ];
53
54 let cache_patterns = vec![
55 Regex::new(r"target/debug").unwrap(),
57 Regex::new(r"target/release").unwrap(),
58 Regex::new(r"target/doc").unwrap(),
59 Regex::new(r"target/tmp").unwrap(),
60 Regex::new(r"target/\.rustc_info\.json").unwrap(),
61
62 Regex::new(r"\.cargo/bin/").unwrap(),
64 Regex::new(r"\.cargo/registry/").unwrap(),
65 Regex::new(r"\.cargo/git/").unwrap(),
66 Regex::new(r"\.cargo/\.crates\.toml").unwrap(),
67 Regex::new(r"\.cargo/\.crates2\.json").unwrap(),
68
69 Regex::new(r"\.rustup/").unwrap(),
71 Regex::new(r"\.rustc_info\.json").unwrap(),
72
73 Regex::new(r"\.vscode/").unwrap(),
75 Regex::new(r"\.idea/").unwrap(),
76 Regex::new(r"rust-project\.json").unwrap(),
77
78 Regex::new(r"target/criterion/").unwrap(),
80 Regex::new(r"target/coverage/").unwrap(),
81 Regex::new(r"target/tarpaulin/").unwrap(),
82
83 Regex::new(r"target/doc/").unwrap(),
85 Regex::new(r"target/package/").unwrap(),
86
87 Regex::new(r"target/profdata/").unwrap(),
89 Regex::new(r"target/llvm-cov/").unwrap(),
90 Regex::new(r"flamegraph\.svg").unwrap(),
91 Regex::new(r"perf\.data").unwrap(),
92
93 Regex::new(r"pkg/").unwrap(),
95 Regex::new(r"wasm-pack\.log").unwrap(),
96
97 Regex::new(r"\.gdb_history").unwrap(),
99 Regex::new(r"openocd\.log").unwrap(),
100
101 Regex::new(r"\.tmp").unwrap(),
103 Regex::new(r"\.swp").unwrap(),
104 Regex::new(r"\.swo").unwrap(),
105 Regex::new(r"~$").unwrap(),
106 ];
107
108 let extensions = vec![
109 "rs".to_string(),
111
112 "toml".to_string(),
114
115 "wat".to_string(), "wast".to_string(),
117
118 "s".to_string(), "asm".to_string(),
120
121 "ld".to_string(), "x".to_string(),
123 ];
124
125 Self {
126 external_patterns,
127 cache_patterns,
128 extensions,
129 }
130 }
131
132 pub fn get_external_patterns(&self) -> &[Regex] {
133 &self.external_patterns
134 }
135
136 pub fn get_cache_patterns(&self) -> &[Regex] {
137 &self.cache_patterns
138 }
139
140 pub fn get_extensions(&self) -> &[String] {
141 &self.extensions
142 }
143
144 pub fn get_script_names() -> Vec<&'static str> {
145 vec![
146 "Cargo.toml", "Cargo.lock",
148
149 "main.rs", "lib.rs", "mod.rs",
151
152 "build.rs", "build.sh", "build.bat",
154
155 "rustfmt.toml", ".rustfmt.toml",
157 "clippy.toml", ".clippy.toml",
158
159 "README.md", "CHANGELOG.md", "CONTRIBUTING.md",
161 "LICENSE", "LICENSE-MIT", "LICENSE-APACHE",
162
163 ".github/workflows/rust.yml", ".github/workflows/ci.yml",
165 ".gitlab-ci.yml", "azure-pipelines.yml",
166 "Jenkinsfile", "buildkite.yml",
167
168 "tests/", "benches/", "examples/",
170 "criterion.toml", "proptest-regressions/",
171
172 "Cross.toml", ".cross.toml",
174 "rust-toolchain", "rust-toolchain.toml",
175
176 "wasm-pack.toml", "Cargo-wasm.toml",
178
179 "memory.x", "link.x", "build.x",
181 "openocd.cfg", "openocd.gdb",
182 ".gdbinit", "gdb.txt",
183
184 "rust-project.json", ".vscode/settings.json",
186 ".idea/", "*.iml",
187
188 "deny.toml", "cargo-deny.toml",
190 "audit.toml", "cargo-audit.toml",
191 "machete.toml", "cargo-machete.toml",
192
193 "release.toml", "cargo-release.toml",
195 "cliff.toml", "git-cliff.toml",
196
197 "flamegraph.toml", "criterion.toml",
199 "tarpaulin.toml", "llvm-cov.toml",
200
201 "Dockerfile", "docker-compose.yml",
203 ".dockerignore", "Containerfile",
204
205 "Procfile", "app.yaml", "serverless.yml",
207 "fly.toml", "shuttle.toml",
208
209 "config.toml", "settings.toml",
211 ".env", ".env.local", ".env.example",
212
213 "install.sh", "setup.sh", "run.sh",
215 "test.sh", "build.sh", "deploy.sh",
216
217 "workspace.toml", "members.toml",
219
220 "security.md", "SECURITY.md",
222 "advisory-db/", "rustsec/",
223 ]
224 }
225}