mirror of
https://codeberg.org/icewind/vmt-parser.git
synced 2026-06-03 12:04:06 +02:00
dir parsing test example
This commit is contained in:
parent
e6b54a8c8d
commit
4629d01d0f
3 changed files with 76 additions and 4 deletions
35
Cargo.lock
generated
35
Cargo.lock
generated
|
|
@ -406,6 +406,15 @@ dependencies = [
|
|||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
||||
dependencies = [
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.193"
|
||||
|
|
@ -502,9 +511,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.41"
|
||||
version = "2.0.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
|
||||
checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -606,7 +615,7 @@ checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
|
|||
[[package]]
|
||||
name = "vdf-reader"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/icewind1991/vdf-reader#21e97bae76b61369f90a2262e46839ea258700be"
|
||||
source = "git+https://github.com/icewind1991/vdf-reader#63b3bdbefdb97d7ea20858697702a8530b541e70"
|
||||
dependencies = [
|
||||
"logos",
|
||||
"miette",
|
||||
|
|
@ -626,6 +635,17 @@ dependencies = [
|
|||
"test-case",
|
||||
"thiserror",
|
||||
"vdf-reader",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
|
||||
dependencies = [
|
||||
"same-file",
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -644,6 +664,15 @@ version = "0.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-util"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
|
|
|
|||
|
|
@ -16,3 +16,4 @@ serde_repr = "0.1.17"
|
|||
test-case = "3.3.1"
|
||||
insta = { version = "1.34.0", features = ["ron"] }
|
||||
miette = { version = "5.10.0", features = ["fancy"] }
|
||||
walkdir = "2.4.0"
|
||||
42
examples/dir.rs
Normal file
42
examples/dir.rs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
use miette::{Context, IntoDiagnostic, Result};
|
||||
use std::env::args;
|
||||
use std::fs::read_to_string;
|
||||
use std::path::Path;
|
||||
use vmt_parser::from_str;
|
||||
use vmt_parser::material::Material;
|
||||
use walkdir::WalkDir;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let mut success = 0;
|
||||
let mut err = Vec::new();
|
||||
let dir = args().nth(1).expect("no path provided");
|
||||
for entry in WalkDir::new(dir)
|
||||
.into_iter()
|
||||
.filter_map(|e| e.ok())
|
||||
.filter(|e| e.file_name().to_str().unwrap_or_default().ends_with(".vmt"))
|
||||
{
|
||||
if let Err(e) = try_parse(entry.path()) {
|
||||
err.push(e);
|
||||
let e = try_parse(entry.path()).unwrap_err();
|
||||
println!("{:?}", e);
|
||||
} else {
|
||||
success += 1;
|
||||
println!("{}", entry.path().display());
|
||||
}
|
||||
}
|
||||
|
||||
println!("successfully parsed {success} files");
|
||||
println!("found errors in {} files", err.len());
|
||||
for e in err {
|
||||
println!("{:?}", e);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn try_parse(path: &Path) -> Result<Material> {
|
||||
let raw = read_to_string(path)
|
||||
.into_diagnostic()
|
||||
.wrap_err_with(|| format!("failed to read {}", path.display()))?;
|
||||
from_str(&raw).into_diagnostic()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue