diff options
Diffstat (limited to 'crates/shirabe/src/plugin')
| -rw-r--r-- | crates/shirabe/src/plugin/command_event.rs | 21 | ||||
| -rw-r--r-- | crates/shirabe/src/plugin/plugin_manager.rs | 17 | ||||
| -rw-r--r-- | crates/shirabe/src/plugin/pre_command_run_event.rs | 2 | ||||
| -rw-r--r-- | crates/shirabe/src/plugin/pre_file_download_event.rs | 6 |
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 } |
