aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/composer.rs
blob: 25e509ceb728c48b209f15467751ec37f78e4657 (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
78
79
80
81
82
//! ref: composer/src/Composer/Composer.php

use shirabe_external_packages::composer::pcre::preg::Preg;

use crate::autoload::autoload_generator::AutoloadGenerator;
use crate::downloader::download_manager::DownloadManager;
use crate::package::archiver::archive_manager::ArchiveManager;
use crate::package::locker::Locker;
use crate::partial_composer::PartialComposer;
use crate::plugin::plugin_manager::PluginManager;

#[derive(Debug)]
pub struct Composer {
    inner: PartialComposer,
    locker: Option<Locker>,
    download_manager: Option<DownloadManager>,
    // TODO(plugin): plugin_manager is part of the plugin API
    plugin_manager: Option<PluginManager>,
    autoload_generator: Option<AutoloadGenerator>,
    archive_manager: Option<ArchiveManager>,
}

impl Composer {
    // TODO: change this information to Shirabe version.
    pub const VERSION: &'static str = "2.9.7";
    pub const BRANCH_ALIAS_VERSION: &'static str = "";
    pub const RELEASE_DATE: &'static str = "2026-04-14 13:31:52";
    pub const SOURCE_VERSION: &'static str = "";
    pub const RUNTIME_API_VERSION: &'static str = "2.2.2";

    pub fn get_version() -> String {
        if Self::VERSION == "@package_version@" {
            return Self::SOURCE_VERSION.to_string();
        }
        if Self::BRANCH_ALIAS_VERSION != "" && Preg::is_match("{^[a-f0-9]{40}$}", Self::VERSION).unwrap_or(false) {
            return format!("{}+{}", Self::BRANCH_ALIAS_VERSION, Self::VERSION);
        }
        Self::VERSION.to_string()
    }

    pub fn set_locker(&mut self, locker: Locker) {
        self.locker = Some(locker);
    }

    pub fn get_locker(&self) -> &Locker {
        self.locker.as_ref().unwrap()
    }

    pub fn set_download_manager(&mut self, manager: DownloadManager) {
        self.download_manager = Some(manager);
    }

    pub fn get_download_manager(&self) -> &DownloadManager {
        self.download_manager.as_ref().unwrap()
    }

    pub fn set_archive_manager(&mut self, manager: ArchiveManager) {
        self.archive_manager = Some(manager);
    }

    pub fn get_archive_manager(&self) -> &ArchiveManager {
        self.archive_manager.as_ref().unwrap()
    }

    // TODO(plugin): set_plugin_manager is part of the plugin API
    pub fn set_plugin_manager(&mut self, manager: PluginManager) {
        self.plugin_manager = Some(manager);
    }

    // TODO(plugin): get_plugin_manager is part of the plugin API
    pub fn get_plugin_manager(&self) -> &PluginManager {
        self.plugin_manager.as_ref().unwrap()
    }

    pub fn set_autoload_generator(&mut self, autoload_generator: AutoloadGenerator) {
        self.autoload_generator = Some(autoload_generator);
    }

    pub fn get_autoload_generator(&self) -> &AutoloadGenerator {
        self.autoload_generator.as_ref().unwrap()
    }
}