From 56a9541fdf6cee656137a5af8dd64df3bba34f36 Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 8 Mar 2026 02:53:04 -0300 Subject: [PATCH 01/53] Use emergency_wrap in more cases --- src/router/handlers/template.rs | 77 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/src/router/handlers/template.rs b/src/router/handlers/template.rs index 1a5f520..72c1fb2 100644 --- a/src/router/handlers/template.rs +++ b/src/router/handlers/template.rs @@ -53,7 +53,7 @@ pub(in crate::router::handlers) fn render( let tera = match tera::Tera::new("./templates/**/*") { Ok(t) => t, Err(e) => { - return (emergency_wrap(&e), 500); + return (emergency_wrap(&e, "Failed instantiating template engine"), 500); }, }; @@ -66,15 +66,8 @@ pub(in crate::router::handlers) fn render( let mut error_context = tera::Context::default(); let mut out_error_message = match error_message { - Some(s) => format!( - "Template render failed.\n\ - User message: {s}, - Engine message:\n
{e:#?}
" - ), - None => format!( - "Template render failed.\n\ - Engine message:\n
{e:#?}
" - ), + Some(s) => emergency_wrap(&e, &s), + None => emergency_wrap(&e, "Template render failed."), }; if log::env_level() >= VERBOSE { @@ -100,36 +93,42 @@ pub(in crate::router::handlers) fn render( } } -fn emergency_wrap(error: &tera::Error) -> String { +fn emergency_wrap(error: &tera::Error, message: &str) -> String { log!(ERROR, "{error:#?}"); + + let message_element = format!("

{message}

"); + format!( - r#" - - - Pre-Templating Error - - - - - -

Early Pre-Templating Error

-

This normally indicates a malformed template.

-
-            {error:#?}
-            
-

- If you haven't modified templates, plese consider - reporting it. -

- - - "# + "\n\ + \n\ + \n\ + en Pre-Templating Error\n + \n\ + \n\ + \n\ + \n\ + \n\ +

en Early Pre-Templating Error

\n\ + {message_element}\n\ +
\n\
+            {error:#?}\n\
+            
\n\ +

This normally indicates a malformed or missing template.

\n\ +

\n\ + If you haven't modified templates, please consider\n\ + reporting it.\n\ +

\n\ + \n\ + \n\ + " ) } @@ -229,7 +228,7 @@ mod tests { fn emergency_wrap_custom_message() { let payload = "JLaTtsnd2IFukIOvqFNymeuiaS6nMaUc"; let error = tera::Error::msg(payload); - let html = emergency_wrap(&error); + let html = emergency_wrap(&error, ""); assert!(html.matches(payload).count() == 1); } } From 2a4165e9e03fac7fc000275b3d9a2280463a32be Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 8 Mar 2026 23:17:14 -0300 Subject: [PATCH 02/53] Better templating error message, container builds justfile recipes --- .justfile | 48 +++++++++++++++++++++++++++++++-- Cargo.lock | 4 +-- containers/build.sh | 4 +-- src/router/handlers/template.rs | 29 ++++++++++++++------ static/graph.toml | 12 +++++---- 5 files changed, 78 insertions(+), 19 deletions(-) diff --git a/.justfile b/.justfile index 62f4a15..54eeb91 100644 --- a/.justfile +++ b/.justfile @@ -20,6 +20,35 @@ run-watch: alias w := run-watch +# Build on changes +[group: 'develop'] +build-watch target=default_target: + @{{ watch_cmd }} {{ just_cmd }} build {{ target }} + +alias bw := build-watch + +# Build dev container +[group: 'develop', working-directory: 'containers'] +build-containerized distro="alpine": build + ./build.sh {{ distro }}-dev + +alias bc := build-containerized + +# Run dev container +[group: 'develop', working-directory: 'containers'] +run-containerized distro="alpine": + ./run.sh {{ distro }}-dev + +alias rc := run-containerized + +# Build dev container and serve from it on changes +[group: 'develop'] +run-watch-containerized: + @{{ watch_cmd }} "{{ just_cmd }} build-containerized \ + && {{ just_cmd }} run-containerized" + +alias wc := run-watch-containerized + [private] quick-assess: {{ just_cmd }} lint check quick-test-cover @@ -297,13 +326,28 @@ clean: alias cl := clean -# Build project with Cargo +# Build [group: 'build'] build target=default_target: cargo build --target {{ target }} --locked + alias b := build +# glibc build +[group: 'build'] +build-gnu: + cargo build --target {{ glibc_target }} --locked + +alias bg := build-gnu + +# musl build +[group: 'build'] +build-musl: + cargo build --target {{ musl_target }} --locked + +alias bm := build-musl + # Release build [group: 'build'] release-build target=default_target: @@ -314,7 +358,7 @@ alias rb := release-build # glibc release build [group: 'build'] release-build-gnu: - cargo build --target {{ glibc_target }} --locked --release + cargo build --target {{ glibc_target }} --locked --release alias rbg := release-build-gnu diff --git a/Cargo.lock b/Cargo.lock index 1b418d6..cad448a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -550,9 +550,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libm" diff --git a/containers/build.sh b/containers/build.sh index 6e2338d..33a5816 100755 --- a/containers/build.sh +++ b/containers/build.sh @@ -9,9 +9,9 @@ if podman container exists "$tag"; then fi if [ "$suffix" = 'debian-dev' ]; then - cp -v ../target/x86_64-unknown-linux-gnu/release/en en + cp -v ../target/x86_64-unknown-linux-gnu/debug/en en elif [ "$suffix" = 'alpine-dev' ]; then - cp -v ../target/x86_64-unknown-linux-musl/release/en en + cp -v ../target/x86_64-unknown-linux-musl/debug/en en fi podman build \ diff --git a/src/router/handlers/template.rs b/src/router/handlers/template.rs index 72c1fb2..92a8041 100644 --- a/src/router/handlers/template.rs +++ b/src/router/handlers/template.rs @@ -53,7 +53,10 @@ pub(in crate::router::handlers) fn render( let tera = match tera::Tera::new("./templates/**/*") { Ok(t) => t, Err(e) => { - return (emergency_wrap(&e, "Failed instantiating template engine"), 500); + return ( + emergency_wrap(&e, "Failed instantiating template engine"), + 500, + ); }, }; @@ -103,8 +106,11 @@ fn emergency_wrap(error: &tera::Error, message: &str) -> String { \n\ \n\ en Pre-Templating Error\n - \n\ - \n\ + \n\ + \n\