11 Commits

Author SHA1 Message Date
Release-plz 7c6a9a0646 chore(release): Release v0.1.0
Committed / committed (pull_request) Successful in 37s
CI / cargo shear (pull_request) Successful in 6m5s
CI / prek (pull_request) Successful in 6m40s
CI / cargo shear (push) Successful in 7m40s
CI / prek (push) Successful in 8m55s
Release-plz / Release-plz Release (push) Successful in 9m17s
Release-plz / Release-plz PR (push) Successful in 2m40s
Signed-off-by: Release-plz <release-plz@noreply.huizinga.dev>
2026-04-06 08:20:33 +02:00
Dreaded_X 6f24a31032 chore(actions): Publish Arch Linux package
CI / prek (pull_request) Successful in 8m25s
CI / cargo shear (pull_request) Successful in 6m33s
Committed / committed (pull_request) Successful in 22s
CI / cargo shear (push) Successful in 11m13s
CI / prek (push) Successful in 14m54s
Release-plz / Release-plz Release (push) Successful in 15m6s
Release-plz / Release-plz PR (push) Successful in 15m8s
Audit / cargo audit (push) Successful in 15m46s
2026-04-06 07:29:50 +02:00
Dreaded_X d44a563d42 feat(package): Added PKGBUILD 2026-04-06 07:29:50 +02:00
Dreaded_X 8b42406820 chore(license): Add GPL license 2026-04-06 07:29:50 +02:00
Dreaded_X 3d7b077a0e chore(actions): Name steps 2026-04-06 07:29:50 +02:00
Dreaded_X 2046c6c7a7 chore(actions): Renamed release-plz workflow file 2026-04-06 07:29:50 +02:00
Dreaded_X 9c681c4b03 feat: Set user agent
Committed / committed (pull_request) Successful in 50s
CI / cargo shear (pull_request) Successful in 6m16s
CI / prek (pull_request) Successful in 6m21s
CI / cargo shear (push) Successful in 7m0s
CI / prek (push) Successful in 8m36s
Release-plz / Release-plz Release (push) Successful in 7m19s
Release-plz / Release-plz PR (push) Successful in 8m0s
2026-04-06 07:20:44 +02:00
Dreaded_X 8059c25767 chore(actions): Use commited to check pr commits
Committed / committed (pull_request) Successful in 29s
CI / cargo shear (pull_request) Successful in 5m19s
CI / prek (pull_request) Successful in 5m21s
CI / cargo shear (push) Successful in 6m45s
CI / prek (push) Successful in 6m49s
Release-plz / Release-plz PR (push) Successful in 6m56s
Release-plz / Release-plz Release (push) Successful in 3m15s
2026-04-05 08:15:17 +02:00
Dreaded_X 031ccb890e chore(actions): Cancel in-progress ci runs when pushing to pr 2026-04-05 06:32:10 +02:00
Dreaded_X 7c4b34cf9a chore(docs): Added README
CI / prek (push) Successful in 13m1s
Release-plz / Release-plz Release (push) Successful in 9m20s
CI / cargo shear (push) Successful in 4m17s
Release-plz / Release-plz PR (push) Successful in 4m26s
2026-04-05 06:12:07 +02:00
Dreaded_X 66373c0636 chore(actions): Setup workflows 2026-04-05 06:12:07 +02:00
10 changed files with 20 additions and 56 deletions
+4 -4
View File
@@ -32,11 +32,11 @@ jobs:
run: | run: |
git config user.name "Release-plz" git config user.name "Release-plz"
git config user.email "release-plz@noreply.huizinga.dev" git config user.email "release-plz@noreply.huizinga.dev"
git config url.https://${{ gitea.actor }}:${{ secrets.RELEASE_PLZ_TOKEN }}@git.huizinga.dev/.insteadOf https://git.huizinga.dev/ git config url.https://${{ gitea.actor }}:${{ secrets.GITEA_TOKEN }}@git.huizinga.dev/.insteadOf https://git.huizinga.dev/
- name: release-plz release - name: release-plz release
env: env:
CARGO_REGISTRIES_INFRA_TOKEN: "Bearer ${{ secrets.RELEASE_PLZ_TOKEN }}" CARGO_REGISTRIES_INFRA_TOKEN: "Bearer ${{ secrets.REGISTRY_TOKEN }}"
run: release-plz release --git-token "${{ secrets.RELEASE_PLZ_TOKEN }}" --forge gitea run: release-plz release --git-token "${{ secrets.GITEA_TOKEN }}" --forge gitea
release-plz-pr: release-plz-pr:
name: Release-plz PR name: Release-plz PR
@@ -59,4 +59,4 @@ jobs:
tool: release-plz tool: release-plz
- *git-setup - *git-setup
- name: release-plz release-pr - name: release-plz release-pr
run: release-plz release-pr --git-token "${{ secrets.RELEASE_PLZ_TOKEN }}" --forge gitea run: release-plz release-pr --git-token "${{ secrets.GITEA_TOKEN }}" --forge gitea
+1 -1
View File
@@ -20,6 +20,6 @@ jobs:
path: . path: .
- name: Upload package - name: Upload package
run: | run: |
curl --user ${{ gitea.actor }}:${{ secrets.REGISTRY_TOKEN }} \ curl --user ${{ gitea.actor }}:${{ secrets.GITEA_TOKEN }} \
--upload-file "$(ls | grep -E 'crete-[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-.*.pkg.tar.zst')" \ --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 https://git.huizinga.dev/api/packages/infra/arch/core
-1
View File
@@ -31,7 +31,6 @@ repos:
rev: "1.0.0" rev: "1.0.0"
hooks: hooks:
- id: mdformat - id: mdformat
exclude: "^CHANGELOG.md$"
- repo: local - repo: local
hooks: hooks:
+1 -24
View File
@@ -7,30 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.1.3](https://git.huizinga.dev/infra/crete/compare/v0.1.2...v0.1.3) - 2026-04-21 ## [0.1.0](https://git.huizinga.dev/infra/crete/releases/tag/v0.1.0) - 2026-04-06
### <!-- 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 ### <!-- 0 -->Features
Generated
+1 -1
View File
@@ -214,7 +214,7 @@ dependencies = [
[[package]] [[package]]
name = "crete" name = "crete"
version = "0.1.3" version = "0.1.0"
dependencies = [ dependencies = [
"clap", "clap",
"clap_complete", "clap_complete",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "crete" name = "crete"
version = "0.1.3" version = "0.1.0"
edition = "2024" edition = "2024"
default-run = "crete" default-run = "crete"
publish = ["infra"] publish = ["infra"]
+3 -2
View File
@@ -140,11 +140,12 @@
"array", "array",
"null" "null"
], ],
"default": null,
"items": { "items": {
"type": "string", "type": "string",
"format": "ipv4" "format": "ipv4"
} },
"maxItems": 2,
"minItems": 2
}, },
"gateway": { "gateway": {
"type": [ "type": [
+3 -2
View File
@@ -136,11 +136,12 @@
"array", "array",
"null" "null"
], ],
"default": null,
"items": { "items": {
"type": "string", "type": "string",
"format": "ipv4" "format": "ipv4"
} },
"maxItems": 2,
"minItems": 2
}, },
"gateway": { "gateway": {
"type": [ "type": [
+5 -11
View File
@@ -1,8 +1,8 @@
use std::net::Ipv4Addr; use std::net::Ipv4Addr;
use std::ops::Deref; use std::ops::Deref;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::str::FromStr;
use minijinja::value::ViaDeserialize;
use minijinja::{AutoEscape, Environment, path_loader}; use minijinja::{AutoEscape, Environment, path_loader};
use walkdir::WalkDir; use walkdir::WalkDir;
@@ -16,13 +16,6 @@ pub struct PathEnvironment<'a> {
path: PathBuf, path: PathBuf,
} }
fn apply_netmask(
ip: ViaDeserialize<Ipv4Addr>,
netmask: ViaDeserialize<Ipv4Addr>,
) -> Result<String, minijinja::Error> {
Ok((*ip & *netmask).to_string())
}
impl<'a> PathEnvironment<'a> { impl<'a> PathEnvironment<'a> {
pub fn new(path: &Path) -> Self { pub fn new(path: &Path) -> Self {
let mut env = Environment::new(); let mut env = Environment::new();
@@ -34,7 +27,10 @@ impl<'a> PathEnvironment<'a> {
env.set_auto_escape_callback(|_| AutoEscape::None); env.set_auto_escape_callback(|_| AutoEscape::None);
// Add filters // Add filters
env.add_filter("to_prefix", |netmask: ViaDeserialize<Ipv4Addr>| { 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())
})?;
let mask = netmask.to_bits(); let mask = netmask.to_bits();
let prefix = mask.leading_ones(); let prefix = mask.leading_ones();
@@ -48,8 +44,6 @@ impl<'a> PathEnvironment<'a> {
} }
}); });
env.add_function("apply_netmask", apply_netmask);
// Helper function for getting the path to kubeconfig files // Helper function for getting the path to kubeconfig files
env.add_filter("kubeconfig", move |names: Vec<String>| { env.add_filter("kubeconfig", move |names: Vec<String>| {
names names
+1 -9
View File
@@ -53,8 +53,7 @@ struct Network {
ip: Ipv4Addr, ip: Ipv4Addr,
netmask: Ipv4Addr, netmask: Ipv4Addr,
gateway: Ipv4Addr, gateway: Ipv4Addr,
#[serde(default)] dns: [Ipv4Addr; 2],
dns: Option<Vec<Ipv4Addr>>,
#[optional_rename(OptionalTailscale)] #[optional_rename(OptionalTailscale)]
#[optional_wrap] #[optional_wrap]
tailscale: Tailscale, tailscale: Tailscale,
@@ -129,13 +128,6 @@ impl Node {
// Sadly we have to this manually // Sadly we have to this manually
// TODO: Find a better way of doing this // TODO: Find a better way of doing this
let default = OptionalNodeDeserialize { let default = OptionalNodeDeserialize {
network: Some(OptionalNetwork {
tailscale: Some(OptionalTailscale {
advertise_routes: Some(false),
..Default::default()
}),
..Default::default()
}),
patches: Some(OptionalPatches { patches: Some(OptionalPatches {
all: Some(vec![]), all: Some(vec![]),
control_plane: Some(vec![]), control_plane: Some(vec![]),