/* Additionnal build, doc: https://doc.rust-lang.org/cargo/reference/build-scripts.html What is build here: - Compile the SASS file to CSS file. */ use std::{ env, path::Path, process::{Command, Output}, }; fn exists_in_path

(filename: P) -> bool where P: AsRef, { for path in env::split_paths(&env::var_os("PATH").unwrap()) { if path.join(&filename).is_file() { return true; } } false } fn main() { println!("cargo:rerun-if-changed=style.scss"); fn run_sass(filename_without_extension: &str) { fn run_sass_command(command: &mut Command, name: &str) -> Output { command .arg("--no-source-map") .arg(format!("scss/{}.scss", name)) .arg(format!("static/{}.css", name)) .output() .expect("Unable to compile SASS file, install SASS, see https://sass-lang.com/") } let output = if exists_in_path("sass.bat") { run_sass_command( Command::new("cmd").args(["/C", "sass.bat"]), filename_without_extension, ) } else { run_sass_command(&mut Command::new("sass"), filename_without_extension) }; if !output.status.success() { // SASS will put the error in the file. let error = std::fs::read_to_string(format!("./static/{}.css", filename_without_extension)) .unwrap_or_else(|_| { panic!("unable to read {}.css", filename_without_extension) }); panic!("{}", error); } } run_sass("style_light"); run_sass("style_dark"); }