smol bot
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs41
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(())
+}