1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//
use actix::prelude::*;

use git_next_core::git;

impl Handler<crate::messages::CloneRepo> for crate::RepoActor {
    type Result = ();
    #[tracing::instrument(name = "RepoActor::CloneRepo", skip_all, fields(repo = %self.repo_details /*, gitdir = %self.repo_details.gitdir */))]
    fn handle(
        &mut self,
        _msg: crate::messages::CloneRepo,
        ctx: &mut Self::Context,
    ) -> Self::Result {
        crate::logger(self.log.as_ref(), "Handler: CloneRepo: start");
        tracing::debug!("Handler: CloneRepo: start");
        match git::repository::open(&*self.repository_factory, &self.repo_details) {
            Ok(repository) => {
                crate::logger(self.log.as_ref(), "open okay");
                tracing::debug!("open okay");
                self.open_repository.replace(repository);
                if self.repo_details.repo_config.is_none() {
                    crate::do_send(
                        ctx.address(),
                        crate::messages::LoadConfigFromRepo,
                        self.log.as_ref(),
                    );
                } else {
                    crate::do_send(
                        ctx.address(),
                        crate::messages::RegisterWebhook::new(),
                        self.log.as_ref(),
                    );
                }
            }
            Err(err) => {
                crate::logger(self.log.as_ref(), "open failed");
                tracing::debug!("err: {err:?}");
                tracing::warn!("Could not open repo: {err}")
            }
        }
        tracing::debug!("Handler: CloneRepo: finish");
    }
}