From e83a9f3f518d59034357ea9e4fddf33cf5180ea4 Mon Sep 17 00:00:00 2001 From: LailaTheElf Date: Tue, 26 Aug 2025 00:07:59 +0200 Subject: [PATCH] add --version flag --- .gitignore | 3 ++- build.sh | 7 +++++++ src/main.rs | 11 +++++++++++ src/render.rs | 18 +++++++++++++++--- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 9e3641e..80893c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target -/html \ No newline at end of file +/html +/src/version.rs diff --git a/build.sh b/build.sh index b6448a9..ddb1b3e 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,12 @@ #!/bin/sh +rm webTemplate-* + +version="$(cat Cargo.toml | grep '^version' | sed -e 's/^.*"\([^"]*\)".*$/\1/')" +commit="$(git show --oneline -s | sed -e 's/ .*$//')" +dirty="$(test "$(git diff --shortstat 2> /dev/null | tail -n1)" == "" || echo -n "_drity" )" +echo "pub const VERSION: &'static str = \"${version} (${commit}${dirty})\";" >src/version.rs + cross build --target aarch64-unknown-linux-gnu --release cargo build --release diff --git a/src/main.rs b/src/main.rs index 0174c30..a14496a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,9 @@ use minijinja::Environment; mod render; use render::{Renderer, IndexItem, build_jinja_env, Template}; +mod version; +use version::VERSION; + const SRC_PATH: &'static str = "./src/"; const OUT_PATH: &'static str = "./html/"; @@ -97,6 +100,10 @@ fn render_index( } } +fn version() { + println!("version: {}", VERSION); +} + fn usage() { println!("webtemplate [--output=] [--src=]"); } @@ -148,6 +155,10 @@ fn main() { "help" => { usage(); } + "version" => { + version(); + return; + } _ => { println!("ERROR: invalid option {}", option); usage(); diff --git a/src/render.rs b/src/render.rs index c80e350..b3725ca 100644 --- a/src/render.rs +++ b/src/render.rs @@ -98,14 +98,26 @@ impl Renderer { let split = indexer::split_params(content); match parse_md(split.md, jinja_env) { Some(md) => { - let template = jinja_env.get_template(&page.template).unwrap(); - let html = template.render(context! { + let template = match jinja_env.get_template(&page.template) { + Ok(templ) => templ, + Err(_) => { + println!("ERROR: jinja: failed to get template"); + return None; + }, + }; + let html = match template.render(context! { index => index.to_minijinja(), is_error_not_found => false, url => page.get_url(), body => md, params => Renderer::convert_yaml(split.yaml) - }).unwrap(); + }) { + Ok(out) => out, + Err(_) => { + println!("ERROR: jinja: failed to render template"); + return None; + }, + }; Some(html) },