git-next/crates/repo-actor/src/handlers/load_config_from_repo.rs

39 lines
1.4 KiB
Rust
Raw Normal View History

//
use actix::prelude::*;
use tracing::Instrument as _;
use crate as actor;
impl Handler<actor::messages::LoadConfigFromRepo> for actor::RepoActor {
type Result = ();
#[tracing::instrument(name = "RepoActor::LoadConfigFromRepo", skip_all, fields(repo = %self.repo_details))]
fn handle(
&mut self,
_msg: actor::messages::LoadConfigFromRepo,
ctx: &mut Self::Context,
) -> Self::Result {
tracing::debug!("Handler: LoadConfigFromRepo: start");
let Some(open_repository) = &self.open_repository else {
return;
};
let open_repository = open_repository.duplicate();
let repo_details = self.repo_details.clone();
let addr = ctx.address();
let log = self.log.clone();
async move {
match actor::load::config_from_repository(repo_details, &*open_repository).await {
Ok(repo_config) => {
actor::logger(&log, "send: LoadedConfig");
addr.do_send(actor::messages::ReceiveRepoConfig::new(repo_config))
}
Err(err) => tracing::warn!(?err, "Failed to load config"),
// TODO: (#95) should notify user
}
}
.in_current_span()
.into_actor(self)
.wait(ctx);
tracing::debug!("Handler: LoadConfigFromRepo: finish");
}
}