v0.1.4-pre.003

This commit is contained in:
2026-08-16 10:21:15 +02:00
parent 4a68a54d85
commit fa6d4e1039
9 changed files with 517 additions and 35 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-config-lib/USAGE.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Utilisation de ksp-config-lib
@@ -248,7 +248,7 @@ if saved.source_changed() && saved.reload_required() {
La construction depuis zéro utilise les constructeurs publics `LoggingConfigDocument::new`, `LoggingProfileConfig::new`, `LoggingConsoleConfig::new`, `LoggingFileConfig::new`, `LoggingOutputFilterConfig::new` et `LoggingTargetFilterConfig::new`. Les mêmes contraintes schema/sémantiques sont appliquées au moment de `save_logging_document()`.
### 10.2 Inspecter un source enregistré sans contourner Config
### 10.2 Inspecter et réparer un source enregistré sans contourner Config
```rust
let source = match management.read_source(&file_id) {
@@ -261,7 +261,31 @@ let managed_path = source.path();
let raw_content = source.content();
```
Cette API est notamment destinée à une UI de réparation lorsque le document n'est plus validable. Elle n'autorise pas la lecture d'un chemin arbitraire.
Cette lecture est notamment destinée à une UI de réparation lorsque le document n'est plus validable. Elle n'autorise pas la lecture d'un chemin arbitraire.
Après édition du texte brut, le candidat est soumis à Config :
```rust
let saved = match management.save_source_candidate(&file_id, edited_source.as_str()) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
if saved.source_changed() && saved.reload_required() {
// Reload the affected Config consumer through the application lifecycle.
}
```
`save_source_candidate()` :
- accepte uniquement un `file_id` enregistré de kind `Config` ;
- parse le candidat comme JSON ;
- valide le schema enregistré et les invariants sémantiques KSP ;
- ne remplace aucune donnée lorsque l'une de ces validations échoue ;
- persiste atomiquement le texte brut validé sans reformattage implicite ;
- retourne `ConfigDocumentChangeReport` pour distinguer un changement réel d'un candidat identique.
Le path reste résolu exclusivement par `ConfigFileRegistry`; l'appelant ne fournit jamais de path physique.
### 10.3 Exploiter les rapports `.env`