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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
//! 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<std::rc::Rc<std::cell::RefCell<DownloadManager>>>,
// TODO(plugin): plugin_manager is part of the plugin API
plugin_manager: Option<Box<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: std::rc::Rc<std::cell::RefCell<DownloadManager>>,
) {
self.download_manager = Some(manager);
}
pub fn get_download_manager(&self) -> &std::rc::Rc<std::cell::RefCell<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(Box::new(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()
}
pub fn get_package(&self) -> &dyn crate::package::root_package_interface::RootPackageInterface {
self.inner.get_package()
}
pub fn get_config(&self) -> &crate::config::Config {
self.inner.get_config()
}
pub fn get_repository_manager(
&self,
) -> &crate::repository::repository_manager::RepositoryManager {
self.inner.get_repository_manager()
}
pub fn get_event_dispatcher(
&self,
) -> &crate::event_dispatcher::event_dispatcher::EventDispatcher {
self.inner.get_event_dispatcher()
}
pub fn get_installation_manager(
&self,
) -> &crate::installer::installation_manager::InstallationManager {
self.inner.get_installation_manager()
}
pub fn get_loop(&self) -> &std::rc::Rc<std::cell::RefCell<crate::util::r#loop::Loop>> {
self.inner.get_loop()
}
pub fn is_global(&self) -> bool {
self.inner.is_global()
}
}
|