From 1adce5a199952eb6fd3f9ebfc7038f5e479e5271 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 19 Feb 2026 00:42:53 +0100 Subject: javascript hot reload --- ui/client-scripts/src/lib.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'ui/client-scripts/src/lib.rs') diff --git a/ui/client-scripts/src/lib.rs b/ui/client-scripts/src/lib.rs index 408799a..9ac96e4 100644 --- a/ui/client-scripts/src/lib.rs +++ b/ui/client-scripts/src/lib.rs @@ -5,9 +5,43 @@ */ use std::borrow::Cow; +#[cfg(not(feature = "reload"))] pub fn js_bundle() -> Cow<'static, str> { include_str!(concat!(env!("OUT_DIR"), "/bundle.js")).into() } +#[cfg(not(feature = "reload"))] pub fn js_bundle_map() -> Cow<'static, str> { include_str!(concat!(env!("OUT_DIR"), "/bundle.js.map")).into() } + +#[cfg(feature = "reload")] +pub fn js_bundle() -> Cow<'static, str> { + use std::process::{Command, Stdio}; + + let proc = Command::new("esbuild") + .arg("ui/client-scripts/src/main.ts") + .arg("--bundle") + .arg("--target=esnext") + .arg("--sourcemap") + .arg("--format=esm") + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .unwrap(); + + let output = proc.wait_with_output().unwrap(); + + Cow::Owned(if output.status.success() { + String::from_utf8(output.stdout).unwrap() + } else { + format!( + "console.error({:?})", + String::from_utf8(output.stderr).unwrap() + ) + }) +} + +#[cfg(feature = "reload")] +pub fn js_bundle_map() -> Cow<'static, str> { + Cow::Borrowed("") +} -- cgit v1.3