From ccb0ce87e12f82126e228411ed327502929c2ac5 Mon Sep 17 00:00:00 2001 From: soruh Date: Sun, 11 Jun 2023 01:32:21 +0200 Subject: [PATCH] new debug server outline --- build.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ web/index.html | 15 +++++++++++++++ web/main.css | 3 +++ web/main.js | 22 ++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 build.rs create mode 100644 web/index.html create mode 100644 web/main.css create mode 100644 web/main.js diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..96469b9 --- /dev/null +++ b/build.rs @@ -0,0 +1,45 @@ +fn main() { + #[cfg(feature = "debug_server")] + pack_debug_page().unwrap(); + + println!("cargo:rerun-if-changed=main.js"); + println!("cargo:rerun-if-changed=index.html"); + println!("cargo:rerun-if-changed=main.css"); +} + +#[cfg(feature = "debug_server")] +fn pack_debug_page() -> Result<(), Box> { + use std::io::Write; + + use css_minify::optimizations::{Level, Minifier}; + + let js = std::fs::read_to_string("web/main.js").unwrap(); + let html = std::fs::read_to_string("web/index.html").unwrap(); + let css = std::fs::read_to_string("web/main.css").unwrap(); + + let mut out = Vec::new(); + minify_js::minify( + &minify_js::Session::new(), + minify_js::TopLevelMode::Global, + js.as_bytes(), + &mut out, + ) + .unwrap(); + let js = std::str::from_utf8(&out)?; + + let css = Minifier::default().minify(&css, Level::Three).unwrap(); + + let (head, body) = html + .split_once("") + .expect("did not find split point in html"); + + let html = minify_html::minify( + format!("{head}{body}").as_bytes(), + &minify_html::Cfg::spec_compliant(), + ); + + std::fs::File::create(std::env::var("OUT_DIR").unwrap() + "/minified.html")? + .write_all(&html)?; + + Ok(()) +} diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..1f133b7 --- /dev/null +++ b/web/index.html @@ -0,0 +1,15 @@ + + + + + + + Centralex State + + + + + + + + \ No newline at end of file diff --git a/web/main.css b/web/main.css new file mode 100644 index 0000000..3fb8bab --- /dev/null +++ b/web/main.css @@ -0,0 +1,3 @@ +.body { + background-color: gray; +} \ No newline at end of file diff --git a/web/main.js b/web/main.js new file mode 100644 index 0000000..6bcbb22 --- /dev/null +++ b/web/main.js @@ -0,0 +1,22 @@ +window.onload = () => { + const evtSource = new EventSource("/events"); + evtSource.addEventListener("change", event => { + console.log(event); + + const newElement = document.createElement("li"); + const eventList = document.getElementById("list"); + newElement.textContent = `change at ${+event.data}`; + eventList.appendChild(newElement); + + fetch("/data").then(res => res.json().then(res => console.log(res))); + }); + + evtSource.addEventListener("ping", event => { + console.log(event); + + const newElement = document.createElement("li"); + const eventList = document.getElementById("list"); + newElement.textContent = `ping at ${+event.data}`; + eventList.appendChild(newElement); + }); +}; \ No newline at end of file