blob: f508b38eda6c6a0df420016a56a593a705b78669 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
use std::env;
use std::fs;
use std::io::{self, Write};
use std::path::PathBuf;
use lalrpop;
fn main() {
lalrpop::process_root().unwrap();
include_test_data().unwrap();
}
/// Builds the index of the test data for use with the `::tests`
/// module.
fn include_test_data() -> io::Result<()> {
let cwd = env::current_dir()?;
let mut sink = fs::File::create(
PathBuf::from(env::var_os("OUT_DIR").unwrap())
.join("tests.index.rs.inc")).unwrap();
writeln!(&mut sink, "{{")?;
let mut dirs = vec![PathBuf::from("tests/data")];
while let Some(dir) = dirs.pop() {
println!("rerun-if-changed={}", dir.to_str().unwrap());
for entry in fs::read_dir(dir).unwrap() {
let entry = entry?;
let path = entry.path();
if path.is_file() {
writeln!(
&mut sink, " add!({:?}, {:?});",
path.components().skip(2)
.map(|c| c.as_os_str().to_str().expect("valid UTF-8"))
.collect::<Vec<_>>().join("/"),
cwd.join(path))?;
} else if path.is_dir() {
dirs.push(path.clone());
}
}
}
writeln!(&mut sink, "}}")?;
Ok(())
}
|