aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/plugin')
-rw-r--r--crates/shirabe/src/plugin/command_event.rs21
-rw-r--r--crates/shirabe/src/plugin/plugin_manager.rs17
-rw-r--r--crates/shirabe/src/plugin/pre_command_run_event.rs2
-rw-r--r--crates/shirabe/src/plugin/pre_file_download_event.rs6
4 files changed, 30 insertions, 16 deletions
diff --git a/crates/shirabe/src/plugin/command_event.rs b/crates/shirabe/src/plugin/command_event.rs
index 715f29a..f2a8417 100644
--- a/crates/shirabe/src/plugin/command_event.rs
+++ b/crates/shirabe/src/plugin/command_event.rs
@@ -2,8 +2,8 @@
use crate::event_dispatcher::event::Event;
use indexmap::IndexMap;
-use shirabe_external_packages::symfony::console::input::input_interface::InputInterface;
-use shirabe_external_packages::symfony::console::output::output_interface::OutputInterface;
+use shirabe_external_packages::symfony::component::console::input::input_interface::InputInterface;
+use shirabe_external_packages::symfony::component::console::output::output_interface::OutputInterface;
use shirabe_php_shim::PhpMixed;
#[derive(Debug)]
@@ -16,17 +16,26 @@ impl CommandEvent {
// TODO(phase-b): input/output dropped because storing &dyn references in an event would
// require lifetime parameters; restore once Plugin API needs them.
pub fn new(
- name: String,
- command_name: String,
+ name: &str,
+ command_name: &str,
+ _input: &dyn InputInterface,
+ _output: &dyn OutputInterface,
+ ) -> Self {
+ Self::new6(name, command_name, _input, _output, vec![], IndexMap::new())
+ }
+
+ pub fn new6(
+ name: &str,
+ command_name: &str,
_input: &dyn InputInterface,
_output: &dyn OutputInterface,
args: Vec<String>,
flags: IndexMap<String, PhpMixed>,
) -> Self {
- let inner = Event::new(name, args, flags);
+ let inner = Event::new(name.to_string(), args, flags);
Self {
inner,
- command_name,
+ command_name: command_name.to_string(),
}
}
diff --git a/crates/shirabe/src/plugin/plugin_manager.rs b/crates/shirabe/src/plugin/plugin_manager.rs
index 24b8e0b..03c4841 100644
--- a/crates/shirabe/src/plugin/plugin_manager.rs
+++ b/crates/shirabe/src/plugin/plugin_manager.rs
@@ -76,13 +76,13 @@ impl PluginManager {
disable_plugins: DisablePlugins,
) -> Self {
let allow_plugin_rules = Self::parse_allowed_plugins(
- composer.get_config().get("allow-plugins").clone(),
+ composer.get_config().borrow().get("allow-plugins").clone(),
Some(composer.get_locker()),
);
let allow_global_plugin_rules = Self::parse_allowed_plugins(
global_composer
.as_ref()
- .map(|gc| gc.get_config().get("allow-plugins").clone())
+ .map(|gc| gc.get_config().borrow_mut().get("allow-plugins").clone())
.unwrap_or(PhpMixed::Bool(false)),
None,
);
@@ -224,7 +224,7 @@ impl PluginManager {
}
if package.get_name() == "symfony/flex"
- && Preg::is_match("{^[0-9.]+$}", package.get_version(), None).unwrap_or(false)
+ && Preg::is_match3("{^[0-9.]+$}", package.get_version(), None).unwrap_or(false)
&& version_compare(package.get_version(), "1.9.8", "<")
{
self.io.write_error(&format!("<warning>The \"{}\" plugin {}was skipped because it is not compatible with Composer 2+. Make sure to update it to version 1.9.8 or greater.</warning>",
@@ -762,7 +762,7 @@ impl PluginManager {
.map(|(k, v)| (k.clone(), *v))
.collect();
for (pattern, allow) in &rules_snapshot {
- if Preg::is_match(pattern, package, None).unwrap_or(false) {
+ if Preg::is_match3(pattern, package, None).unwrap_or(false) {
return Ok(*allow);
}
}
@@ -811,14 +811,18 @@ impl PluginManager {
// persist answer in composer.json if it wasn't simply discarded
if answer_str == "y" || answer_str == "n" {
- let allow_plugins_value =
- composer_ref.get_config().get("allow-plugins").clone();
+ let allow_plugins_value = composer_ref
+ .get_config()
+ .borrow_mut()
+ .get("allow-plugins")
+ .clone();
if let Some(arr) = allow_plugins_value.as_array() {
let mut allow_plugins = arr.clone();
allow_plugins
.insert(package.to_string(), Box::new(PhpMixed::Bool(allow)));
if composer_ref
.get_config()
+ .borrow_mut()
.get("sort-packages")
.as_bool()
.unwrap_or(false)
@@ -827,6 +831,7 @@ impl PluginManager {
}
composer_ref
.get_config()
+ .borrow()
.get_config_source()
.add_config_setting(
"allow-plugins",
diff --git a/crates/shirabe/src/plugin/pre_command_run_event.rs b/crates/shirabe/src/plugin/pre_command_run_event.rs
index 7a8b2f1..a3da4f7 100644
--- a/crates/shirabe/src/plugin/pre_command_run_event.rs
+++ b/crates/shirabe/src/plugin/pre_command_run_event.rs
@@ -2,7 +2,7 @@
// TODO(plugin): this event is part of the plugin API and is dispatched before a command runs
use crate::event_dispatcher::event::Event;
-use shirabe_external_packages::symfony::console::input::input_interface::InputInterface;
+use shirabe_external_packages::symfony::component::console::input::input_interface::InputInterface;
#[derive(Debug)]
pub struct PreCommandRunEvent {
diff --git a/crates/shirabe/src/plugin/pre_file_download_event.rs b/crates/shirabe/src/plugin/pre_file_download_event.rs
index 0e2be7a..37e1e1e 100644
--- a/crates/shirabe/src/plugin/pre_file_download_event.rs
+++ b/crates/shirabe/src/plugin/pre_file_download_event.rs
@@ -9,7 +9,7 @@ use crate::util::http_downloader::HttpDownloader;
#[derive(Debug)]
pub struct PreFileDownloadEvent {
inner: Event,
- http_downloader: HttpDownloader,
+ http_downloader: std::rc::Rc<std::cell::RefCell<HttpDownloader>>,
processed_url: String,
custom_cache_key: Option<String>,
r#type: String,
@@ -20,7 +20,7 @@ pub struct PreFileDownloadEvent {
impl PreFileDownloadEvent {
pub fn new(
name: String,
- http_downloader: HttpDownloader,
+ http_downloader: std::rc::Rc<std::cell::RefCell<HttpDownloader>>,
processed_url: String,
r#type: String,
context: PhpMixed,
@@ -36,7 +36,7 @@ impl PreFileDownloadEvent {
}
}
- pub fn get_http_downloader(&self) -> &HttpDownloader {
+ pub fn get_http_downloader(&self) -> &std::rc::Rc<std::cell::RefCell<HttpDownloader>> {
&self.http_downloader
}