smol bot
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..88304fa --- /dev/null +++ b/build.rs @@ -0,0 +1,41 @@ +#![feature(let_chains)] +use std::fs; +use std::io::prelude::*; +use std::path::Path; + +pub fn process(input: impl AsRef<Path>) -> std::io::Result<()> { + let mut f = fs::File::create(dbg!(Path::new("html").join(input.as_ref()))).unwrap(); + if !matches!( + input.as_ref().extension().unwrap().to_str().unwrap(), + "html" | "css" + ) { + return f.write_all(&std::fs::read(Path::new("html-src").join(input.as_ref()))?); + } + let mut c = std::process::Command::new("minify") + .arg(Path::new("html-src").join(input.as_ref())) + .stdout(std::process::Stdio::piped()) + .spawn() + .unwrap(); + let mut o = c.stdout.take().unwrap(); + let mut buf = [0; 1024]; + while let Ok(x) = o.read(&mut buf) + && x != 0 + { + f.write_all(&buf[..x])?; + } + c.wait()?; + Ok(()) +} + +fn main() -> std::io::Result<()> { + if !Path::new("html").exists() { + fs::create_dir("html")?; + } + + for path in fs::read_dir("html-src")? { + process(path.unwrap().path().file_name().unwrap())?; + } + println!("cargo:rerun-if-changed=html-src/"); + println!("cargo:rerun-if-changed=build.rs"); + Ok(()) +} |