aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/command/home_command.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-17 13:56:15 +0900
committernsfisis <nsfisis@gmail.com>2026-05-17 13:59:31 +0900
commita9bb49c7d685dd82feaf4050f756fdf590315200 (patch)
tree0242a737e8280fe9e25c38bb7a6f844d2eff623c /crates/shirabe/src/command/home_command.rs
parent15b1be89eb168a30e96459c6a5307afcb7323bbc (diff)
downloadphp-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.tar.gz
php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.tar.zst
php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.zip
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.
Diffstat (limited to 'crates/shirabe/src/command/home_command.rs')
-rw-r--r--crates/shirabe/src/command/home_command.rs33
1 files changed, 32 insertions, 1 deletions
diff --git a/crates/shirabe/src/command/home_command.rs b/crates/shirabe/src/command/home_command.rs
index 142f868..dd8a81c 100644
--- a/crates/shirabe/src/command/home_command.rs
+++ b/crates/shirabe/src/command/home_command.rs
@@ -1,14 +1,17 @@
//! ref: composer/src/Composer/Command/HomeCommand.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::{FILTER_VALIDATE_URL, filter_var};
use crate::command::base_command::BaseCommand;
use crate::command::completion_trait::CompletionTrait;
+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::package::complete_package_interface::CompletePackageInterface;
use crate::repository::repository_factory::RepositoryFactory;
use crate::repository::repository_interface::RepositoryInterface;
@@ -18,7 +21,9 @@ use crate::util::process_executor::ProcessExecutor;
#[derive(Debug)]
pub struct HomeCommand {
- inner: BaseCommand,
+ inner: Command,
+ composer: Option<Composer>,
+ io: Option<Box<dyn IOInterface>>,
}
impl CompletionTrait for HomeCommand {}
@@ -216,3 +221,29 @@ impl HomeCommand {
))
}
}
+
+impl BaseCommand for HomeCommand {
+ 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<Composer> {
+ &mut self.composer
+ }
+
+ fn io(&self) -> Option<&dyn IOInterface> {
+ self.io.as_deref()
+ }
+
+ fn io_mut(&mut self) -> &mut Option<Box<dyn IOInterface>> {
+ &mut self.io
+ }
+}