aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/partial_composer.rs
blob: a08e272fd56b65c34cda477f9c2d60fc7503b06b (plain)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//! ref: composer/src/Composer/PartialComposer.php

use crate::config::Config;
use crate::event_dispatcher::event_dispatcher::EventDispatcher;
use crate::installer::installation_manager::InstallationManager;
use crate::package::root_package_interface::RootPackageInterface;
use crate::repository::repository_manager::RepositoryManager;
use crate::util::r#loop::Loop;

#[derive(Debug)]
pub struct PartialComposer {
    global: bool,
    package: Option<Box<dyn RootPackageInterface>>,
    r#loop: Option<Loop>,
    repository_manager: Option<RepositoryManager>,
    installation_manager: Option<InstallationManager>,
    config: Option<Config>,
    event_dispatcher: Option<EventDispatcher>,
}

impl PartialComposer {
    pub fn set_package(&mut self, package: Box<dyn RootPackageInterface>) {
        self.package = Some(package);
    }

    pub fn get_package(&self) -> &dyn RootPackageInterface {
        self.package.as_deref().unwrap()
    }

    pub fn set_config(&mut self, config: Config) {
        self.config = Some(config);
    }

    pub fn get_config(&self) -> &Config {
        self.config.as_ref().unwrap()
    }

    pub fn set_loop(&mut self, r#loop: Loop) {
        self.r#loop = Some(r#loop);
    }

    pub fn get_loop(&self) -> &Loop {
        self.r#loop.as_ref().unwrap()
    }

    pub fn set_repository_manager(&mut self, manager: RepositoryManager) {
        self.repository_manager = Some(manager);
    }

    pub fn get_repository_manager(&self) -> &RepositoryManager {
        self.repository_manager.as_ref().unwrap()
    }

    pub fn set_installation_manager(&mut self, manager: InstallationManager) {
        self.installation_manager = Some(manager);
    }

    pub fn get_installation_manager(&self) -> &InstallationManager {
        self.installation_manager.as_ref().unwrap()
    }

    pub fn set_event_dispatcher(&mut self, event_dispatcher: EventDispatcher) {
        self.event_dispatcher = Some(event_dispatcher);
    }

    pub fn get_event_dispatcher(&self) -> &EventDispatcher {
        self.event_dispatcher.as_ref().unwrap()
    }

    pub fn is_global(&self) -> bool {
        self.global
    }

    pub fn set_global(&mut self) {
        self.global = true;
    }
}