diff options
author | Vika <vika@fireburn.ru> | 2022-10-07 19:53:04 +0300 |
---|---|---|
committer | Vika <vika@fireburn.ru> | 2022-10-07 19:53:04 +0300 |
commit | 9f7b903901acb0cd6ec9cb2146406a92ebf79cab (patch) | |
tree | c7a45f69d2d59621365494dc2d3657848390b61d /kittybox-rs/templates/build.rs | |
parent | 6cb479acc61ab19f655cedd878283b214e352a3d (diff) | |
download | kittybox-9f7b903901acb0cd6ec9cb2146406a92ebf79cab.tar.zst |
templates: move static assets to the templates crate
It makes more sense to keep CSS near the templates, and the client-side JavaScript code too, since it depends on the DOM structure to work. Additionally, the overhead of `include_dir!()` is almost completely mitigated by the fact that this is a separate crate that isn't recompiled often. The linking stage, however, is still expected to take a little bit long. But I doubt it'd be longer than what it was before, since it's the same exact files that get linked into the app.
Diffstat (limited to 'kittybox-rs/templates/build.rs')
-rw-r--r-- | kittybox-rs/templates/build.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/kittybox-rs/templates/build.rs b/kittybox-rs/templates/build.rs new file mode 100644 index 0000000..1140060 --- /dev/null +++ b/kittybox-rs/templates/build.rs @@ -0,0 +1,26 @@ +fn main() { + use std::env; + let out_dir = std::path::PathBuf::from(env::var("OUT_DIR").unwrap()); + println!("cargo:rerun-if-changed=assets/"); + let assets = std::fs::read_dir("assets").unwrap(); + for file in assets.map(|a| a.unwrap()) { + std::fs::copy( + file.path(), + out_dir.join(file.file_name()) + ) + .unwrap(); + } + println!("cargo::rerun-if-changed=javascript/"); + if let Ok(exit) = std::process::Command::new("tsc") + .arg("--outDir") + .arg(&out_dir) + .current_dir("javascript") + .spawn() + .unwrap() + .wait() + { + if !exit.success() { + std::process::exit(exit.code().unwrap_or(1)) + } + } +} |