mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-08 17:48:14 -07:00
global: snapshot
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
use std::{collections::HashSet, fmt::Write as FmtWrite, fs, io, path::Path};
|
||||
|
||||
use brk_grouper::{
|
||||
AGE_RANGE_NAMES, AMOUNT_RANGE_NAMES, EPOCH_NAMES, GE_AMOUNT_NAMES, LT_AMOUNT_NAMES,
|
||||
MAX_AGE_NAMES, MIN_AGE_NAMES, SPENDABLE_TYPE_NAMES, TERM_NAMES, YEAR_NAMES,
|
||||
};
|
||||
use brk_types::{pools, Index, TreeNode};
|
||||
use serde_json::Value;
|
||||
|
||||
@@ -60,6 +64,36 @@ fn generate_constants(output: &mut String) {
|
||||
writeln!(output, " {}: \"{}\",", pool.slug(), pool.name).unwrap();
|
||||
}
|
||||
writeln!(output, "}});\n").unwrap();
|
||||
|
||||
// Cohort names - serialize from brk_grouper using serde_json
|
||||
generate_cohort_names(output);
|
||||
}
|
||||
|
||||
fn generate_cohort_names(output: &mut String) {
|
||||
use serde::Serialize;
|
||||
|
||||
fn export_const<T: Serialize>(output: &mut String, name: &str, value: &T) {
|
||||
let json = serde_json::to_string_pretty(value).unwrap();
|
||||
writeln!(
|
||||
output,
|
||||
"export const {} = /** @type {{const}} */ ({});\n",
|
||||
name, json
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
writeln!(output, "// Cohort names\n").unwrap();
|
||||
|
||||
export_const(output, "TERM_NAMES", &TERM_NAMES);
|
||||
export_const(output, "EPOCH_NAMES", &EPOCH_NAMES);
|
||||
export_const(output, "YEAR_NAMES", &YEAR_NAMES);
|
||||
export_const(output, "SPENDABLE_TYPE_NAMES", &SPENDABLE_TYPE_NAMES);
|
||||
export_const(output, "AGE_RANGE_NAMES", &AGE_RANGE_NAMES);
|
||||
export_const(output, "MAX_AGE_NAMES", &MAX_AGE_NAMES);
|
||||
export_const(output, "MIN_AGE_NAMES", &MIN_AGE_NAMES);
|
||||
export_const(output, "AMOUNT_RANGE_NAMES", &AMOUNT_RANGE_NAMES);
|
||||
export_const(output, "GE_AMOUNT_NAMES", &GE_AMOUNT_NAMES);
|
||||
export_const(output, "LT_AMOUNT_NAMES", <_AMOUNT_NAMES);
|
||||
}
|
||||
|
||||
fn generate_type_definitions(output: &mut String, schemas: &TypeSchemas) {
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
use std::{collections::HashSet, fmt::Write as FmtWrite, fs, io, path::Path};
|
||||
|
||||
use brk_grouper::{
|
||||
AGE_RANGE_NAMES, AMOUNT_RANGE_NAMES, EPOCH_NAMES, GE_AMOUNT_NAMES, LT_AMOUNT_NAMES,
|
||||
MAX_AGE_NAMES, MIN_AGE_NAMES, SPENDABLE_TYPE_NAMES, TERM_NAMES, YEAR_NAMES,
|
||||
};
|
||||
use brk_types::{pools, Index, TreeNode};
|
||||
use serde::Serialize;
|
||||
use serde_json::Value;
|
||||
|
||||
use crate::{
|
||||
@@ -69,6 +74,29 @@ fn generate_constants(output: &mut String) {
|
||||
writeln!(output, " \"{}\": \"{}\",", pool.slug(), pool.name).unwrap();
|
||||
}
|
||||
writeln!(output, "}}\n").unwrap();
|
||||
|
||||
// Cohort names
|
||||
generate_cohort_names(output);
|
||||
}
|
||||
|
||||
fn generate_cohort_names(output: &mut String) {
|
||||
fn export_const<T: Serialize>(output: &mut String, name: &str, value: &T) {
|
||||
let json = serde_json::to_string_pretty(value).unwrap();
|
||||
writeln!(output, "{}: Final = {}\n", name, json).unwrap();
|
||||
}
|
||||
|
||||
writeln!(output, "# Cohort names\n").unwrap();
|
||||
|
||||
export_const(output, "TERM_NAMES", &TERM_NAMES);
|
||||
export_const(output, "EPOCH_NAMES", &EPOCH_NAMES);
|
||||
export_const(output, "YEAR_NAMES", &YEAR_NAMES);
|
||||
export_const(output, "SPENDABLE_TYPE_NAMES", &SPENDABLE_TYPE_NAMES);
|
||||
export_const(output, "AGE_RANGE_NAMES", &AGE_RANGE_NAMES);
|
||||
export_const(output, "MAX_AGE_NAMES", &MAX_AGE_NAMES);
|
||||
export_const(output, "MIN_AGE_NAMES", &MIN_AGE_NAMES);
|
||||
export_const(output, "AMOUNT_RANGE_NAMES", &AMOUNT_RANGE_NAMES);
|
||||
export_const(output, "GE_AMOUNT_NAMES", &GE_AMOUNT_NAMES);
|
||||
export_const(output, "LT_AMOUNT_NAMES", <_AMOUNT_NAMES);
|
||||
}
|
||||
|
||||
fn generate_type_definitions(output: &mut String, schemas: &TypeSchemas) {
|
||||
|
||||
@@ -21,7 +21,9 @@ pub fn generate_rust_client(
|
||||
writeln!(output, "// Auto-generated BRK Rust client").unwrap();
|
||||
writeln!(output, "// Do not edit manually\n").unwrap();
|
||||
writeln!(output, "#![allow(non_camel_case_types)]").unwrap();
|
||||
writeln!(output, "#![allow(dead_code)]\n").unwrap();
|
||||
writeln!(output, "#![allow(dead_code)]").unwrap();
|
||||
writeln!(output, "#![allow(unused_variables)]").unwrap();
|
||||
writeln!(output, "#![allow(clippy::useless_format)]\n").unwrap();
|
||||
|
||||
generate_imports(&mut output);
|
||||
generate_base_client(&mut output);
|
||||
@@ -41,7 +43,8 @@ fn generate_imports(output: &mut String) {
|
||||
output,
|
||||
r#"use std::sync::Arc;
|
||||
use serde::de::DeserializeOwned;
|
||||
use brk_types::*;
|
||||
pub use brk_grouper::*;
|
||||
pub use brk_types::*;
|
||||
|
||||
"#
|
||||
)
|
||||
|
||||
@@ -14,7 +14,8 @@ pub fn to_pascal_case(s: &str) -> String {
|
||||
|
||||
/// Convert a string to snake_case, handling Rust keywords.
|
||||
pub fn to_snake_case(s: &str) -> String {
|
||||
let sanitized = s.replace('-', "_");
|
||||
// Convert to lowercase and replace dashes with underscores
|
||||
let sanitized = s.to_lowercase().replace('-', "_");
|
||||
|
||||
// Prefix with _ if starts with digit
|
||||
let sanitized = if sanitized.chars().next().is_some_and(|c| c.is_ascii_digit()) {
|
||||
|
||||
Reference in New Issue
Block a user