v0.1.0-pre.061
This commit is contained in:
@@ -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 d’intégration de `kb-store`.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user