51 lines
1.6 KiB
Rust
51 lines
1.6 KiB
Rust
|
//
|
||
|
use crate as actor;
|
||
|
use actix::prelude::*;
|
||
|
|
||
|
impl Handler<actor::messages::AdvanceMain> for actor::RepoActor {
|
||
|
type Result = ();
|
||
|
#[tracing::instrument(name = "RepoActor::AdvanceMainTo", skip_all, fields(repo = %self.repo_details, commit = ?msg))]
|
||
|
fn handle(
|
||
|
&mut self,
|
||
|
msg: actor::messages::AdvanceMain,
|
||
|
ctx: &mut Self::Context,
|
||
|
) -> Self::Result {
|
||
|
let Some(repo_config) = self.repo_details.repo_config.clone() else {
|
||
|
tracing::warn!("No config loaded");
|
||
|
return;
|
||
|
};
|
||
|
let Some(open_repository) = &self.open_repository else {
|
||
|
return;
|
||
|
};
|
||
|
let repo_details = self.repo_details.clone();
|
||
|
let addr = ctx.address();
|
||
|
let message_token = self.message_token;
|
||
|
|
||
|
match actor::branch::advance_main(
|
||
|
msg.unwrap(),
|
||
|
&repo_details,
|
||
|
&repo_config,
|
||
|
&**open_repository,
|
||
|
) {
|
||
|
Err(err) => {
|
||
|
tracing::warn!("advance main: {err}");
|
||
|
}
|
||
|
Ok(_) => {
|
||
|
let log = self.log.clone();
|
||
|
match repo_config.source() {
|
||
|
git_next_config::RepoConfigSource::Repo => {
|
||
|
actor::do_send(addr, actor::messages::LoadConfigFromRepo, &log);
|
||
|
}
|
||
|
git_next_config::RepoConfigSource::Server => {
|
||
|
actor::do_send(
|
||
|
addr,
|
||
|
actor::messages::ValidateRepo::new(message_token),
|
||
|
&log,
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|