From 9f7b903901acb0cd6ec9cb2146406a92ebf79cab Mon Sep 17 00:00:00 2001 From: Vika Date: Fri, 7 Oct 2022 19:53:04 +0300 Subject: 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. --- kittybox-rs/templates/build.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 kittybox-rs/templates/build.rs (limited to 'kittybox-rs/templates/build.rs') 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)) + } + } +} -- cgit 1.4.1