feat(infra): temp IdeA généralisé à tous les agents + purge du store managed-tmp au shutdown d'IdeA — #200 (QA verte)
This commit is contained in:
@ -238,4 +238,27 @@ impl ManagedTempStore for FsManagedTempStore {
|
||||
}
|
||||
Ok(ManagedTempGcReport { deleted })
|
||||
}
|
||||
|
||||
async fn purge_all(&self) -> Result<ManagedTempGcReport, ManagedTempError> {
|
||||
let mut deleted = 0usize;
|
||||
let mut entries = match tokio::fs::read_dir(&self.root).await {
|
||||
Ok(entries) => entries,
|
||||
Err(err) if err.kind() == std::io::ErrorKind::NotFound => {
|
||||
return Ok(ManagedTempGcReport { deleted: 0 });
|
||||
}
|
||||
Err(err) => return Err(io_error(err)),
|
||||
};
|
||||
while let Some(entry) = entries.next_entry().await.map_err(io_error)? {
|
||||
let path = entry.path();
|
||||
let removed = match entry.file_type().await {
|
||||
Ok(file_type) if file_type.is_dir() => tokio::fs::remove_dir_all(&path).await,
|
||||
Ok(_) => tokio::fs::remove_file(&path).await,
|
||||
Err(err) => Err(err),
|
||||
};
|
||||
if removed.is_ok() {
|
||||
deleted += 1;
|
||||
}
|
||||
}
|
||||
Ok(ManagedTempGcReport { deleted })
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user