Paul Campbell
ffab1986a7
Some checks failed
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
Rust / build (push) Has been cancelled
ci/woodpecker/push/tag-created Pipeline was successful
38 lines
1.4 KiB
Rust
38 lines
1.4 KiB
Rust
//
|
|
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");
|
|
}
|
|
}
|