/*
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(command: &mut Command) -> Output {
command
.arg("scss/style.scss")
.arg("static/style.css")
.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::new("cmd").args(["/C", "sass.bat"]))
} else {
run_sass(&mut Command::new("sass"))
};
if !output.status.success() {
// SASS will put the error in the file.
let error =
std::fs::read_to_string("./static/style.css").expect("unable to read style.css");
panic!("{}", error);
}
}