Compare commits
19 Commits
7c6a9a0646
..
v0.1.3
| Author | SHA1 | Date | |
|---|---|---|---|
| 8290896f9d | |||
|
f51746c5df
|
|||
|
ca72d08cc1
|
|||
| 6a7ab1f9d5 | |||
|
f7e4a2d545
|
|||
|
7142ff0fa3
|
|||
| afcca9eb47 | |||
|
c76b0e6ade
|
|||
|
8e5e02d29d
|
|||
|
c15f1ae5c4
|
|||
|
c5d39e4e51
|
|||
|
744cf3e395
|
|||
|
a9ae86d08a
|
|||
|
8aff9de90e
|
|||
|
e60738e81d
|
|||
|
9d5c095e7f
|
|||
|
2ffa196014
|
|||
|
babcf1ec23
|
|||
|
c90e95613e
|
@@ -32,11 +32,11 @@ jobs:
|
||||
run: |
|
||||
git config user.name "Release-plz"
|
||||
git config user.email "release-plz@noreply.huizinga.dev"
|
||||
git config url.https://${{ gitea.actor }}:${{ secrets.GITEA_TOKEN }}@git.huizinga.dev/.insteadOf https://git.huizinga.dev/
|
||||
git config url.https://${{ gitea.actor }}:${{ secrets.RELEASE_PLZ_TOKEN }}@git.huizinga.dev/.insteadOf https://git.huizinga.dev/
|
||||
- name: release-plz release
|
||||
env:
|
||||
CARGO_REGISTRIES_INFRA_TOKEN: "Bearer ${{ secrets.REGISTRY_TOKEN }}"
|
||||
run: release-plz release --git-token "${{ secrets.GITEA_TOKEN }}" --forge gitea
|
||||
CARGO_REGISTRIES_INFRA_TOKEN: "Bearer ${{ secrets.RELEASE_PLZ_TOKEN }}"
|
||||
run: release-plz release --git-token "${{ secrets.RELEASE_PLZ_TOKEN }}" --forge gitea
|
||||
|
||||
release-plz-pr:
|
||||
name: Release-plz PR
|
||||
@@ -59,4 +59,4 @@ jobs:
|
||||
tool: release-plz
|
||||
- *git-setup
|
||||
- name: release-plz release-pr
|
||||
run: release-plz release-pr --git-token "${{ secrets.GITEA_TOKEN }}" --forge gitea
|
||||
run: release-plz release-pr --git-token "${{ secrets.RELEASE_PLZ_TOKEN }}" --forge gitea
|
||||
|
||||
@@ -20,6 +20,6 @@ jobs:
|
||||
path: .
|
||||
- name: Upload package
|
||||
run: |
|
||||
curl --user ${{ gitea.actor }}:${{ secrets.GITEA_TOKEN }} \
|
||||
curl --user ${{ gitea.actor }}:${{ secrets.REGISTRY_TOKEN }} \
|
||||
--upload-file "$(ls | grep -E 'crete-[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-.*.pkg.tar.zst')" \
|
||||
https://git.huizinga.dev/api/packages/infra/arch/core
|
||||
|
||||
@@ -31,6 +31,7 @@ repos:
|
||||
rev: "1.0.0"
|
||||
hooks:
|
||||
- id: mdformat
|
||||
exclude: "^CHANGELOG.md$"
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
|
||||
+24
-1
@@ -7,7 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.0](https://git.huizinga.dev/infra/crete/releases/tag/v0.1.0) - 2026-04-06
|
||||
## [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
|
||||
|
||||
- No default value for advertise routes
|
||||
|
||||
## [0.1.0](https://git.huizinga.dev/infra/crete/releases/tag/v0.1.0) - 2026-04-07
|
||||
|
||||
### <!-- 0 -->Features
|
||||
|
||||
|
||||
Generated
+1
-1
@@ -214,7 +214,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crete"
|
||||
version = "0.1.0"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"clap_complete",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "crete"
|
||||
version = "0.1.0"
|
||||
version = "0.1.3"
|
||||
edition = "2024"
|
||||
default-run = "crete"
|
||||
publish = ["infra"]
|
||||
|
||||
@@ -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
|
||||
|
||||
+9
-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,
|
||||
@@ -128,6 +129,13 @@ impl Node {
|
||||
// Sadly we have to this manually
|
||||
// TODO: Find a better way of doing this
|
||||
let default = OptionalNodeDeserialize {
|
||||
network: Some(OptionalNetwork {
|
||||
tailscale: Some(OptionalTailscale {
|
||||
advertise_routes: Some(false),
|
||||
..Default::default()
|
||||
}),
|
||||
..Default::default()
|
||||
}),
|
||||
patches: Some(OptionalPatches {
|
||||
all: Some(vec![]),
|
||||
control_plane: Some(vec![]),
|
||||
|
||||
Reference in New Issue
Block a user