From ca72d08cc1412d74721567ba32680d1249c31a85 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Tue, 21 Apr 2026 04:43:09 +0200 Subject: [PATCH 1/2] refactor: Use ViaDeserialize to convert ip address --- src/environment.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/environment.rs b/src/environment.rs index 7cf3569..5836d34 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -1,8 +1,8 @@ use std::net::Ipv4Addr; use std::ops::Deref; use std::path::{Path, PathBuf}; -use std::str::FromStr; +use minijinja::value::ViaDeserialize; use minijinja::{AutoEscape, Environment, path_loader}; use walkdir::WalkDir; @@ -27,10 +27,7 @@ impl<'a> PathEnvironment<'a> { env.set_auto_escape_callback(|_| AutoEscape::None); // Add filters - env.add_filter("to_prefix", |netmask: String| { - let netmask = Ipv4Addr::from_str(&netmask).map_err(|err| { - minijinja::Error::new(minijinja::ErrorKind::InvalidOperation, err.to_string()) - })?; + env.add_filter("to_prefix", |netmask: ViaDeserialize| { let mask = netmask.to_bits(); let prefix = mask.leading_ones(); -- 2.52.0 From f51746c5df37ba9c5f148cd52696a8d5ca8cf13a Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Tue, 21 Apr 2026 04:46:31 +0200 Subject: [PATCH 2/2] feat: Add function that applies netmask to ip --- src/environment.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/environment.rs b/src/environment.rs index 5836d34..904e36e 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -16,6 +16,13 @@ pub struct PathEnvironment<'a> { path: PathBuf, } +fn apply_netmask( + ip: ViaDeserialize, + netmask: ViaDeserialize, +) -> Result { + Ok((*ip & *netmask).to_string()) +} + impl<'a> PathEnvironment<'a> { pub fn new(path: &Path) -> Self { let mut env = Environment::new(); @@ -41,6 +48,8 @@ impl<'a> PathEnvironment<'a> { } }); + env.add_function("apply_netmask", apply_netmask); + // Helper function for getting the path to kubeconfig files env.add_filter("kubeconfig", move |names: Vec| { names -- 2.52.0