From a9bb49c7d685dd82feaf4050f756fdf590315200 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 17 May 2026 13:56:15 +0900 Subject: fix(compile): implement abstract class traits across all types Implement BaseCommand trait and other abstract class traits across all command, downloader, io, package, and VCS driver types. Also fix trait method signatures for composer_mut and io_mut to return mutable references to Option rather than Option of mutable references. --- crates/shirabe/src/command/run_script_command.rs | 34 +++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'crates/shirabe/src/command/run_script_command.rs') diff --git a/crates/shirabe/src/command/run_script_command.rs b/crates/shirabe/src/command/run_script_command.rs index 09624af..fac896a 100644 --- a/crates/shirabe/src/command/run_script_command.rs +++ b/crates/shirabe/src/command/run_script_command.rs @@ -1,13 +1,16 @@ //! ref: composer/src/Composer/Command/RunScriptCommand.php use anyhow::Result; +use shirabe_external_packages::symfony::component::console::command::command::Command; use shirabe_external_packages::symfony::console::input::input_interface::InputInterface; use shirabe_external_packages::symfony::console::output::output_interface::OutputInterface; use shirabe_php_shim::{InvalidArgumentException, PhpMixed, RuntimeException}; use crate::command::base_command::BaseCommand; +use crate::composer::Composer; use crate::console::input::input_argument::InputArgument; use crate::console::input::input_option::InputOption; +use crate::io::io_interface::IOInterface; use crate::script::event::Event as ScriptEvent; use crate::script::script_events::ScriptEvents; use crate::util::platform::Platform; @@ -15,7 +18,10 @@ use crate::util::process_executor::ProcessExecutor; #[derive(Debug)] pub struct RunScriptCommand { - inner: BaseCommand, + inner: Command, + composer: Option, + io: Option>, + script_events: Vec<&'static str>, } @@ -249,3 +255,29 @@ impl RunScriptCommand { Ok(result) } } + +impl BaseCommand for RunScriptCommand { + fn inner(&self) -> &Command { + &self.inner + } + + fn inner_mut(&mut self) -> &mut Command { + &mut self.inner + } + + fn composer(&self) -> Option<&Composer> { + self.composer.as_ref() + } + + fn composer_mut(&mut self) -> &mut Option { + &mut self.composer + } + + fn io(&self) -> Option<&dyn IOInterface> { + self.io.as_deref() + } + + fn io_mut(&mut self) -> &mut Option> { + &mut self.io + } +} -- cgit v1.3.1