bindgen: determinism

This commit is contained in:
nym21
2026-01-27 23:48:19 +01:00
parent 730e83472a
commit fecaf0f400
21 changed files with 787 additions and 739 deletions
@@ -7,8 +7,9 @@ pub mod client;
pub mod tree;
mod types;
use std::{fmt::Write, fs, io, path::Path};
use std::{fmt::Write, io, path::Path};
use super::write_if_changed;
use crate::{ClientMetadata, Endpoint};
/// Generate Rust client from metadata and OpenAPI endpoints.
@@ -38,7 +39,7 @@ pub fn generate_rust_client(
tree::generate_tree(&mut output, &metadata.catalog, metadata);
api::generate_main_client(&mut output, endpoints);
fs::write(output_path, output)?;
write_if_changed(output_path, &output)?;
Ok(())
}
@@ -1,6 +1,6 @@
//! Rust tree structure generation.
use std::collections::HashSet;
use std::collections::BTreeSet;
use std::fmt::Write;
use brk_types::TreeNode;
@@ -15,7 +15,7 @@ pub fn generate_tree(output: &mut String, catalog: &TreeNode, metadata: &ClientM
writeln!(output, "// Metrics tree\n").unwrap();
let pattern_lookup = metadata.pattern_lookup();
let mut generated = HashSet::new();
let mut generated = BTreeSet::new();
generate_tree_node(
output,
"MetricsTree",
@@ -32,9 +32,9 @@ fn generate_tree_node(
name: &str,
path: &str,
node: &TreeNode,
pattern_lookup: &std::collections::HashMap<Vec<PatternField>, String>,
pattern_lookup: &std::collections::BTreeMap<Vec<PatternField>, String>,
metadata: &ClientMetadata,
generated: &mut HashSet<String>,
generated: &mut BTreeSet<String>,
) {
let Some(ctx) = prepare_tree_node(node, name, path, pattern_lookup, metadata, generated) else {
return;