v0.1.0-pre.061

This commit is contained in:
2026-07-28 18:41:30 +02:00
parent c7bad46f50
commit f40fb78817
527 changed files with 4598 additions and 4114 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: kb-config/README.md -->
<!-- version: 6 -->
<!-- version: 7 -->
# kb-config
@@ -77,3 +77,14 @@ cargo test -p kb-config settings::tests::
4. conservation de `${NOM}` lorsqu'une valeur requise reste absente, afin que les consommateurs optionnels puissent échouer seulement à l'utilisation.
Les crates métier ne chargent pas elles-mêmes de fichier `.env`.
Le modèle racine utilise :
```text
HELIUS_API_KEY
KB_POSTGRES_MAINNET_URL
KB_POSTGRES_DEVNET_URL
KB_POSTGRES_TEST_URL
```
Les deux URLs runtime alimentent les profils correspondants. `KB_POSTGRES_TEST_URL` reste réservé aux tests dintégration de `kb-store`.

View File

@@ -1,5 +1,5 @@
// file: kb-config/src/environment.rs
// version: 2
// version: 3
//! Environment-file loading and configuration placeholder resolution.
@@ -28,19 +28,15 @@ pub fn load_workspace_environment(
if !selected_path.exists() {
return std::result::Result::Ok(EnvironmentLoadReport { loaded_path: None });
}
match dotenvy::from_path(&selected_path) {
std::result::Result::Ok(()) => {
return std::result::Result::Ok(EnvironmentLoadReport {
loaded_path: std::option::Option::Some(selected_path),
});
},
std::result::Result::Err(error) => {
return std::result::Result::Err(kb_core::Error::new(
"config_env_file_load_failed",
format!("{}: {error}", selected_path.display()),
));
},
}
return match dotenvy::from_path(&selected_path) {
std::result::Result::Ok(()) => std::result::Result::Ok(EnvironmentLoadReport {
loaded_path: std::option::Option::Some(selected_path),
}),
std::result::Result::Err(error) => std::result::Result::Err(kb_core::Error::new(
"config_env_file_load_failed",
format!("{}: {error}", selected_path.display()),
)),
};
}
/// Resolves `${NAME}` and `${NAME:-fallback}` placeholders in arbitrary text.

View File

@@ -1,5 +1,5 @@
// file: kb-config/src/settings.rs
// version: 16
// version: 17
//! Typed configuration models shared by applications and workers.
@@ -1448,6 +1448,23 @@ mod tests {
assert!(result.is_err());
}
#[test]
fn example_config_separates_runtime_postgres_profiles() {
let value = parse_example_value();
assert_eq!(
value["profiles"][0]["database"]["postgres"]["url"],
serde_json::Value::String("${KB_POSTGRES_DEVNET_URL}".to_string())
);
assert_eq!(
value["profiles"][1]["database"]["postgres"]["url"],
serde_json::Value::String("${KB_POSTGRES_MAINNET_URL}".to_string())
);
assert_eq!(
value["profiles"][2]["database"]["postgres"]["url"],
serde_json::Value::String("${KB_POSTGRES_MAINNET_URL}".to_string())
);
}
#[test]
fn schema_rejects_profile_enabled_field() {
let mut value = parse_example_value();