Compare commits
9
Commits
v0.1.1
..
8f1d17dc8a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f1d17dc8a
|
||
|
|
4bdc1a1d63
|
||
|
|
4fcce0e40a
|
||
|
|
8290896f9d | ||
|
|
f51746c5df
|
||
|
|
ca72d08cc1
|
||
|
|
6a7ab1f9d5 | ||
|
|
f7e4a2d545
|
||
|
|
7142ff0fa3
|
@@ -7,6 +7,7 @@ on:
|
||||
- "**/Cargo.lock"
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
audit:
|
||||
@@ -22,6 +23,6 @@ jobs:
|
||||
- name: Setup rust cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
- name: Audit check
|
||||
uses: rustsec/audit-check@v2.0.0
|
||||
uses: https://git.huizinga.dev/infra/rust-audit-check@v3.0.0
|
||||
with:
|
||||
token: ${{ secrets.GITEA_TOKEN }}
|
||||
|
||||
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.3](https://git.huizinga.dev/infra/crete/compare/v0.1.2...v0.1.3) - 2026-04-21
|
||||
|
||||
### <!-- 0 -->Features
|
||||
|
||||
- Add function that applies netmask to ip
|
||||
|
||||
### <!-- 3 -->Refactor
|
||||
|
||||
- Use ViaDeserialize to convert ip address
|
||||
|
||||
## [0.1.2](https://git.huizinga.dev/infra/crete/compare/v0.1.1...v0.1.2) - 2026-04-17
|
||||
|
||||
### <!-- 0 -->Features
|
||||
|
||||
- Make dns optional
|
||||
- Allow more than two dns entries
|
||||
|
||||
## [0.1.1](https://git.huizinga.dev/infra/crete/compare/v0.1.0...v0.1.1) - 2026-04-13
|
||||
|
||||
### <!-- 2 -->Bug Fixes
|
||||
|
||||
Generated
+371
-609
File diff suppressed because it is too large
Load Diff
+11
-11
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "crete"
|
||||
version = "0.1.1"
|
||||
version = "0.1.3"
|
||||
edition = "2024"
|
||||
default-run = "crete"
|
||||
publish = ["infra"]
|
||||
@@ -10,26 +10,26 @@ license = "GPL-3.0-or-later"
|
||||
members = ["xtask"]
|
||||
|
||||
[workspace.dependencies]
|
||||
schemars = { version = "1.2.1", features = ["semver1"] }
|
||||
serde_json = "1.0.149"
|
||||
schemars = { version = "1.2.2", features = ["semver1"] }
|
||||
serde_json = "1.0.151"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "4.6.0", features = ["derive"] }
|
||||
clap_complete = "4.6.0"
|
||||
gix-discover = { version = "0.49.0", features = ["sha1"] }
|
||||
minijinja = { version = "2.18.0", features = ["json", "loader"] }
|
||||
clap = { version = "4.6.7", features = ["derive"] }
|
||||
clap_complete = "4.6.11"
|
||||
gix-discover = { version = "0.56.0", features = ["sha1"] }
|
||||
minijinja = { version = "2.24.0", features = ["json", "loader"] }
|
||||
optional_struct = "0.5.2"
|
||||
reqwest = { version = "0.13.2", default-features = false, features = [
|
||||
reqwest = { version = "0.13.5", default-features = false, features = [
|
||||
"blocking",
|
||||
"stream",
|
||||
"native-tls",
|
||||
] }
|
||||
schemars = { workspace = true }
|
||||
semver = { version = "1.0.27", features = ["serde"] }
|
||||
serde = { version = "1.0.228", features = ["derive"] }
|
||||
semver = { version = "1.0.28", features = ["serde"] }
|
||||
serde = { version = "1.0.229", features = ["derive"] }
|
||||
serde_json = { workspace = true }
|
||||
serde_yaml = "0.9.34"
|
||||
thiserror = "2.0.18"
|
||||
thiserror = "2.0.21"
|
||||
walkdir = "2.5.0"
|
||||
|
||||
[lib]
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "nightly-2026-03-12"
|
||||
channel = "nightly-2026-10-01"
|
||||
profile = "default"
|
||||
components = ["rust-analyzer"]
|
||||
|
||||
@@ -140,12 +140,11 @@
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"default": null,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "ipv4"
|
||||
},
|
||||
"maxItems": 2,
|
||||
"minItems": 2
|
||||
}
|
||||
},
|
||||
"gateway": {
|
||||
"type": [
|
||||
|
||||
+2
-3
@@ -136,12 +136,11 @@
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"default": null,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "ipv4"
|
||||
},
|
||||
"maxItems": 2,
|
||||
"minItems": 2
|
||||
}
|
||||
},
|
||||
"gateway": {
|
||||
"type": [
|
||||
|
||||
+11
-5
@@ -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;
|
||||
|
||||
@@ -16,6 +16,13 @@ pub struct PathEnvironment<'a> {
|
||||
path: PathBuf,
|
||||
}
|
||||
|
||||
fn apply_netmask(
|
||||
ip: ViaDeserialize<Ipv4Addr>,
|
||||
netmask: ViaDeserialize<Ipv4Addr>,
|
||||
) -> Result<String, minijinja::Error> {
|
||||
Ok((*ip & *netmask).to_string())
|
||||
}
|
||||
|
||||
impl<'a> PathEnvironment<'a> {
|
||||
pub fn new(path: &Path) -> Self {
|
||||
let mut env = Environment::new();
|
||||
@@ -27,10 +34,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<Ipv4Addr>| {
|
||||
let mask = netmask.to_bits();
|
||||
let prefix = mask.leading_ones();
|
||||
|
||||
@@ -44,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<String>| {
|
||||
names
|
||||
|
||||
+2
-1
@@ -53,7 +53,8 @@ struct Network {
|
||||
ip: Ipv4Addr,
|
||||
netmask: Ipv4Addr,
|
||||
gateway: Ipv4Addr,
|
||||
dns: [Ipv4Addr; 2],
|
||||
#[serde(default)]
|
||||
dns: Option<Vec<Ipv4Addr>>,
|
||||
#[optional_rename(OptionalTailscale)]
|
||||
#[optional_wrap]
|
||||
tailscale: Tailscale,
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
repo_path = "1.2.4"
|
||||
repo_path = "1.4.1"
|
||||
schemars = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
crete = { path = ".." }
|
||||
|
||||
Reference in New Issue
Block a user