diff options
Diffstat (limited to 'crates')
42 files changed, 236 insertions, 225 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/command.rs b/crates/shirabe-external-packages/src/symfony/console/command/command.rs index 1f1455f8..2af60db0 100644 --- a/crates/shirabe-external-packages/src/symfony/console/command/command.rs +++ b/crates/shirabe-external-packages/src/symfony/console/command/command.rs @@ -325,13 +325,6 @@ macro_rules! delegate_command_trait_impls_to_inner { $crate::delegate_to_inner!($field, fn ignore_validation_errors(&self)); $crate::delegate_to_inner!($field, fn get_ignore_validation_errors(&self) -> bool); }; - // Variant taking the command's PHP fully-qualified class name (see `Command::get_class`). - ($field:ident, $fqcn:literal) => { - $crate::delegate_command_trait_impls_to_inner!($field); - fn get_class(&self) -> String { - $fqcn.to_string() - } - }; } /// Polymorphic interface for all commands (PHP's `Command` base class as seen by @@ -341,7 +334,7 @@ macro_rules! delegate_command_trait_impls_to_inner { /// the state methods there and override the behavior hooks (`configure`/`execute`/...). /// Object-safe so `dyn Command` works. All methods take `&self`; the command's mutable /// state is interior-mutable (see [`CommandData`]). -pub trait Command: std::fmt::Debug + shirabe_php_shim::AsAny { +pub trait Command: std::fmt::Debug + shirabe_php_shim::AsAny + shirabe_php_shim::PhpClass { /// Configures the current command. fn configure(&self) -> anyhow::Result<()> { Ok(()) @@ -376,12 +369,6 @@ pub trait Command: std::fmt::Debug + shirabe_php_shim::AsAny { Ok(()) } - /// The PHP fully-qualified class name of the concrete command. Port hook for PHP's - /// `\get_class($command)` (used by `CompleteCommand`'s debug log), which Rust cannot - /// reflect from a trait object; every concrete command supplies its FQCN, usually via - /// `delegate_command_trait_impls_to_inner!($field, "Fqcn")`. - fn get_class(&self) -> String; - /// Adds suggestions to `suggestions` for the current completion input. /// /// PHP's `complete` is `void` but can throw; errors are surfaced through `anyhow::Result` @@ -571,15 +558,19 @@ pub trait Command: std::fmt::Debug + shirabe_php_shim::AsAny { fn get_ignore_validation_errors(&self) -> bool; } +impl shirabe_php_shim::PhpClass for CommandData { + fn php_class_name(&self) -> &'static str { + panic!( + "php_class_name called on the base command state; concrete commands supply their class name" + ); + } +} + impl Command for CommandData { fn is_enabled(&self) -> bool { true } - fn get_class(&self) -> String { - panic!("get_class called on the base command state; concrete commands supply their FQCN"); - } - fn set_application( &self, application: Option<std::rc::Rc<std::cell::RefCell<dyn Application>>>, diff --git a/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs index a4567829..8a2ccc97 100644 --- a/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs +++ b/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs @@ -11,7 +11,7 @@ use crate::symfony::console::input::input_interface::InputInterface; use crate::symfony::console::input::input_option::InputOption; use crate::symfony::console::output::output_interface::OutputInterface; use indexmap::IndexMap; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; use std::ops::{Deref, DerefMut}; /// Responsible for providing the values to the shell completion. @@ -22,6 +22,11 @@ pub struct CompleteCommand { is_debug: std::cell::Cell<bool>, } +impl_php_class!( + CompleteCommand, + r"Symfony\Component\Console\Command\CompleteCommand" +); + impl Deref for CompleteCommand { type Target = CommandData; @@ -145,7 +150,7 @@ impl CompleteCommand { fn get_class_of_command(command: &std::rc::Rc<std::cell::RefCell<dyn Command>>) -> String { // LazyCommand is intentionally not ported. - command.borrow().get_class() + command.borrow().php_class_name().to_string() } fn get_definition_options( @@ -414,8 +419,5 @@ impl Command for CompleteCommand { } } - crate::delegate_command_trait_impls_to_inner!( - inner, - "Symfony\\Component\\Console\\Command\\CompleteCommand" - ); + crate::delegate_command_trait_impls_to_inner!(inner); } diff --git a/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs index 680ff962..31a94f0f 100644 --- a/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs +++ b/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs @@ -10,7 +10,7 @@ use crate::symfony::console::input::input_interface::InputInterface; use crate::symfony::console::input::input_option::InputOption; use crate::symfony::console::output::output_interface::{self, OutputInterface}; use crate::symfony::process::process::Process; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; use std::ops::{Deref, DerefMut}; /// __DIR__.'/../Resources/completion.bash', embedded at compile time (this port ships as a @@ -23,6 +23,11 @@ pub struct DumpCompletionCommand { inner: CommandData, } +impl_php_class!( + DumpCompletionCommand, + r"Symfony\Component\Console\Command\DumpCompletionCommand" +); + impl Deref for DumpCompletionCommand { type Target = CommandData; @@ -288,8 +293,5 @@ impl Command for DumpCompletionCommand { self.complete_impl(input, suggestions) } - crate::delegate_command_trait_impls_to_inner!( - inner, - "Symfony\\Component\\Console\\Command\\DumpCompletionCommand" - ); + crate::delegate_command_trait_impls_to_inner!(inner); } diff --git a/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs index 83ed4f5b..d7a88422 100644 --- a/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs +++ b/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs @@ -13,7 +13,7 @@ use crate::symfony::console::input::input_definition::DefinitionItem; use crate::symfony::console::input::input_interface::InputInterface; use crate::symfony::console::input::input_option::InputOption; use crate::symfony::console::output::output_interface::OutputInterface; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; use std::ops::{Deref, DerefMut}; /// HelpCommand displays the help for a given command. @@ -23,6 +23,11 @@ pub struct HelpCommand { command: std::cell::RefCell<Option<std::rc::Rc<std::cell::RefCell<dyn Command>>>>, } +impl_php_class!( + HelpCommand, + r"Symfony\Component\Console\Command\HelpCommand" +); + impl Deref for HelpCommand { type Target = CommandData; @@ -164,8 +169,5 @@ impl Command for HelpCommand { Ok(()) } - crate::delegate_command_trait_impls_to_inner!( - inner, - "Symfony\\Component\\Console\\Command\\HelpCommand" - ); + crate::delegate_command_trait_impls_to_inner!(inner); } diff --git a/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs index 79673000..1c1a2aab 100644 --- a/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs +++ b/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs @@ -13,7 +13,7 @@ use crate::symfony::console::input::input_definition::DefinitionItem; use crate::symfony::console::input::input_interface::InputInterface; use crate::symfony::console::input::input_option::InputOption; use crate::symfony::console::output::output_interface::OutputInterface; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; use std::ops::{Deref, DerefMut}; /// ListCommand displays the list of all available commands for the application. @@ -22,6 +22,11 @@ pub struct ListCommand { inner: CommandData, } +impl_php_class!( + ListCommand, + r"Symfony\Component\Console\Command\ListCommand" +); + impl Deref for ListCommand { type Target = CommandData; @@ -165,8 +170,5 @@ impl Command for ListCommand { Ok(()) } - crate::delegate_command_trait_impls_to_inner!( - inner, - "Symfony\\Component\\Console\\Command\\ListCommand" - ); + crate::delegate_command_trait_impls_to_inner!(inner); } diff --git a/crates/shirabe-php-shim/src/lib.rs b/crates/shirabe-php-shim/src/lib.rs index 93b2e430..ab904a46 100644 --- a/crates/shirabe-php-shim/src/lib.rs +++ b/crates/shirabe-php-shim/src/lib.rs @@ -284,6 +284,33 @@ impl<T: std::any::Any> AsAny for T { } } +/// A ported type that reports the name of the PHP class it was ported from. +/// +/// Rust has no runtime class name, so the PHP class name is stated once at the type's +/// definition through [`impl_php_class!`]. Implement this wherever the port needs what PHP's +/// `\get_class()` would report. +pub trait PhpClass { + /// The fully-qualified class name, e.g. `Composer\Command\InstallCommand`. + fn php_class_name(&self) -> &'static str; +} + +/// Implements [`PhpClass`] for a ported type, given the fully-qualified name of the PHP +/// class it was ported from. +/// +/// ```ignore +/// impl_php_class!(InstallCommand, r"Composer\Command\InstallCommand"); +/// ``` +#[macro_export] +macro_rules! impl_php_class { + ($ty:ty, $class_name:literal) => { + impl $crate::PhpClass for $ty { + fn php_class_name(&self) -> &'static str { + $class_name + } + } + }; +} + impl From<i64> for PhpMixed { fn from(value: i64) -> Self { PhpMixed::Int(value) diff --git a/crates/shirabe/src/command/about_command.rs b/crates/shirabe/src/command/about_command.rs index a8653ad9..95d0a343 100644 --- a/crates/shirabe/src/command/about_command.rs +++ b/crates/shirabe/src/command/about_command.rs @@ -13,6 +13,8 @@ pub struct AboutCommand { base_command_data: BaseCommandData, } +shirabe_php_shim::impl_php_class!(AboutCommand, r"Composer\Command\AboutCommand"); + impl Default for AboutCommand { fn default() -> Self { Self::new() @@ -72,10 +74,7 @@ impl Command for AboutCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\AboutCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for AboutCommand { diff --git a/crates/shirabe/src/command/archive_command.rs b/crates/shirabe/src/command/archive_command.rs index fbca89f9..7a24dacc 100644 --- a/crates/shirabe/src/command/archive_command.rs +++ b/crates/shirabe/src/command/archive_command.rs @@ -30,7 +30,7 @@ use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{LogicException, get_debug_type, php_regex}; +use shirabe_php_shim::{LogicException, get_debug_type, impl_php_class, php_regex}; #[derive(Debug)] pub struct ArchiveCommand { @@ -39,6 +39,8 @@ pub struct ArchiveCommand { test_hooks: std::cell::RefCell<ArchiveCommandTestHooks>, } +impl_php_class!(ArchiveCommand, r"Composer\Command\ArchiveCommand"); + /// For testing only: records and stubs for the `ArchiveCommand` partial-mock seam. #[derive(Debug, Default)] pub struct ArchiveCommandTestHooks { @@ -223,10 +225,7 @@ impl Command for ArchiveCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ArchiveCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl ArchiveCommand { diff --git a/crates/shirabe/src/command/audit_command.rs b/crates/shirabe/src/command/audit_command.rs index 87188539..27d594e7 100644 --- a/crates/shirabe/src/command/audit_command.rs +++ b/crates/shirabe/src/command/audit_command.rs @@ -17,7 +17,7 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ - InvalidArgumentException, PhpMixed, UnexpectedValueException, implode, in_array, + InvalidArgumentException, PhpMixed, UnexpectedValueException, impl_php_class, implode, in_array, }; #[derive(Debug)] @@ -25,6 +25,8 @@ pub struct AuditCommand { base_command_data: BaseCommandData, } +impl_php_class!(AuditCommand, r"Composer\Command\AuditCommand"); + impl Default for AuditCommand { fn default() -> Self { Self::new() @@ -240,10 +242,7 @@ impl Command for AuditCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\AuditCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for AuditCommand { diff --git a/crates/shirabe/src/command/base_command.rs b/crates/shirabe/src/command/base_command.rs index 7e8a3f5a..77850e9e 100644 --- a/crates/shirabe/src/command/base_command.rs +++ b/crates/shirabe/src/command/base_command.rs @@ -27,8 +27,8 @@ use shirabe_external_packages::symfony::console::helper::TableSeparator; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ - InvalidArgumentException, LogicException, PhpMixed, RuntimeException, UnexpectedValueException, - count, explode, in_array, is_string, + InvalidArgumentException, LogicException, PhpClass, PhpMixed, RuntimeException, + UnexpectedValueException, count, explode, in_array, is_string, }; pub const SUCCESS: i64 = 0; @@ -280,11 +280,13 @@ macro_rules! delegate_base_command_trait_impls_to_inner { impl Command for BaseCommandData { shirabe_external_packages::delegate_command_trait_impls_to_inner!(inner); +} - fn get_class(&self) -> String { - // Forwards to the base state's panicking get_class; concrete commands supply their - // FQCN through delegate_command_trait_impls_to_inner!'s two-argument variant. - self.inner.get_class() +impl PhpClass for BaseCommandData { + fn php_class_name(&self) -> &'static str { + // Forwards to the base state's panicking implementation; concrete commands supply + // their own class name through `impl_php_class!`. + self.inner.php_class_name() } } diff --git a/crates/shirabe/src/command/bump_command.rs b/crates/shirabe/src/command/bump_command.rs index 20df759f..78b1f627 100644 --- a/crates/shirabe/src/command/bump_command.rs +++ b/crates/shirabe/src/command/bump_command.rs @@ -21,7 +21,8 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ - PhpMixed, file_get_contents, file_put_contents, is_writable, php_regex, strtolower, + PhpMixed, file_get_contents, file_put_contents, impl_php_class, is_writable, php_regex, + strtolower, }; #[derive(Debug)] @@ -29,6 +30,8 @@ pub struct BumpCommand { base_command_data: BaseCommandData, } +impl_php_class!(BumpCommand, r"Composer\Command\BumpCommand"); + impl Default for BumpCommand { fn default() -> Self { Self::new() @@ -445,10 +448,7 @@ impl Command for BumpCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\BumpCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for BumpCommand { diff --git a/crates/shirabe/src/command/check_platform_reqs_command.rs b/crates/shirabe/src/command/check_platform_reqs_command.rs index bcd16d57..088c9407 100644 --- a/crates/shirabe/src/command/check_platform_reqs_command.rs +++ b/crates/shirabe/src/command/check_platform_reqs_command.rs @@ -15,7 +15,7 @@ use indexmap::IndexMap; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{PhpMixed, array_merge_map, strip_tags}; +use shirabe_php_shim::{PhpMixed, array_merge_map, impl_php_class, strip_tags}; use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::SimpleConstraint; @@ -32,6 +32,11 @@ pub struct CheckPlatformReqsCommand { base_command_data: BaseCommandData, } +impl_php_class!( + CheckPlatformReqsCommand, + r"Composer\Command\CheckPlatformReqsCommand" +); + impl Default for CheckPlatformReqsCommand { fn default() -> Self { Self::new() @@ -412,10 +417,7 @@ impl Command for CheckPlatformReqsCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\CheckPlatformReqsCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for CheckPlatformReqsCommand { diff --git a/crates/shirabe/src/command/clear_cache_command.rs b/crates/shirabe/src/command/clear_cache_command.rs index 8aee3f33..430352b9 100644 --- a/crates/shirabe/src/command/clear_cache_command.rs +++ b/crates/shirabe/src/command/clear_cache_command.rs @@ -11,13 +11,15 @@ use crate::io::IOInterfaceImmutable; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::realpath; +use shirabe_php_shim::{impl_php_class, realpath}; #[derive(Debug)] pub struct ClearCacheCommand { base_command_data: BaseCommandData, } +impl_php_class!(ClearCacheCommand, r"Composer\Command\ClearCacheCommand"); + impl Default for ClearCacheCommand { fn default() -> Self { Self::new() @@ -192,10 +194,7 @@ impl Command for ClearCacheCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ClearCacheCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ClearCacheCommand { diff --git a/crates/shirabe/src/command/config_command.rs b/crates/shirabe/src/command/config_command.rs index a6ba2f76..0b22757a 100644 --- a/crates/shirabe/src/command/config_command.rs +++ b/crates/shirabe/src/command/config_command.rs @@ -24,9 +24,9 @@ use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ InvalidArgumentException, PhpMixed, RuntimeException, array_is_list, array_merge, - escapeshellcmd, exec, explode, file_exists, implode, in_array, is_array, is_bool, is_dir, - is_numeric, is_object, is_string, json_encode, php_regex, str_replace, strpos, strtolower, - system, touch, var_export, + escapeshellcmd, exec, explode, file_exists, impl_php_class, implode, in_array, is_array, + is_bool, is_dir, is_numeric, is_object, is_string, json_encode, php_regex, str_replace, strpos, + strtolower, system, touch, var_export, }; use shirabe_semver::VersionParser; @@ -43,6 +43,8 @@ pub struct ConfigCommand { pub(crate) auth_config_source: std::cell::RefCell<Option<JsonConfigSource>>, } +impl_php_class!(ConfigCommand, r"Composer\Command\ConfigCommand"); + impl ConfigCommand { /// List of additional configurable package-properties pub(crate) const CONFIGURABLE_PACKAGE_PROPERTIES: &'static [&'static str] = &[ @@ -1281,10 +1283,7 @@ impl Command for ConfigCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ConfigCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ConfigCommand { diff --git a/crates/shirabe/src/command/create_project_command.rs b/crates/shirabe/src/command/create_project_command.rs index 3410ad8b..7312a60b 100644 --- a/crates/shirabe/src/command/create_project_command.rs +++ b/crates/shirabe/src/command/create_project_command.rs @@ -44,8 +44,8 @@ use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_external_packages::symfony::finder::Finder; use shirabe_php_shim::{ DIRECTORY_SEPARATOR, InvalidArgumentException, PhpMixed, RuntimeException, - UnexpectedValueException, array_pop, chdir, explode_with_limit, file_exists, getcwd, implode, - is_dir, is_file, mkdir, realpath, rtrim, strtolower, unlink, + UnexpectedValueException, array_pop, chdir, explode_with_limit, file_exists, getcwd, + impl_php_class, implode, is_dir, is_file, mkdir, realpath, rtrim, strtolower, unlink, }; use std::path::PathBuf; @@ -59,6 +59,11 @@ pub struct CreateProjectCommand { std::cell::RefCell<Option<std::rc::Rc<std::cell::RefCell<SuggestedPackagesReporter>>>>, } +impl_php_class!( + CreateProjectCommand, + r"Composer\Command\CreateProjectCommand" +); + impl Default for CreateProjectCommand { fn default() -> Self { Self::new() @@ -271,10 +276,7 @@ impl Command for CreateProjectCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\CreateProjectCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for CreateProjectCommand { diff --git a/crates/shirabe/src/command/depends_command.rs b/crates/shirabe/src/command/depends_command.rs index 145d174a..a8910603 100644 --- a/crates/shirabe/src/command/depends_command.rs +++ b/crates/shirabe/src/command/depends_command.rs @@ -18,6 +18,8 @@ pub struct DependsCommand { colors: std::cell::RefCell<Vec<String>>, } +shirabe_php_shim::impl_php_class!(DependsCommand, r"Composer\Command\DependsCommand"); + impl Default for DependsCommand { fn default() -> Self { Self::new() @@ -122,10 +124,7 @@ impl Command for DependsCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\DependsCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for DependsCommand { diff --git a/crates/shirabe/src/command/diagnose_command.rs b/crates/shirabe/src/command/diagnose_command.rs index 047b8377..1674e10e 100644 --- a/crates/shirabe/src/command/diagnose_command.rs +++ b/crates/shirabe/src/command/diagnose_command.rs @@ -40,8 +40,9 @@ use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_external_packages::symfony::process::ExecutableFinder; use shirabe_php_shim::{ InvalidArgumentException, PHP_EOL, PhpMixed, disk_free_space, file_exists, filter_var_boolean, - get_class_err, hash, implode, is_array, is_string, php_regex, rtrim, str_contains, str_replace, - str_starts_with, strpos, strstr, strstr3, strtolower, trim, version_compare, + get_class_err, hash, impl_php_class, implode, is_array, is_string, php_regex, rtrim, + str_contains, str_replace, str_starts_with, strpos, strstr, strstr3, strtolower, trim, + version_compare, }; #[derive(Debug)] @@ -55,6 +56,8 @@ pub struct DiagnoseCommand { pub(crate) exit_code: std::cell::Cell<i64>, } +impl_php_class!(DiagnoseCommand, r"Composer\Command\DiagnoseCommand"); + impl Default for DiagnoseCommand { fn default() -> Self { Self::new() @@ -452,10 +455,7 @@ impl Command for DiagnoseCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\DiagnoseCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for DiagnoseCommand { diff --git a/crates/shirabe/src/command/dump_autoload_command.rs b/crates/shirabe/src/command/dump_autoload_command.rs index d4855d79..59295e23 100644 --- a/crates/shirabe/src/command/dump_autoload_command.rs +++ b/crates/shirabe/src/command/dump_autoload_command.rs @@ -10,13 +10,15 @@ use crate::plugin::PluginEvents; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{InvalidArgumentException, PhpMixed, file_exists}; +use shirabe_php_shim::{InvalidArgumentException, PhpMixed, file_exists, impl_php_class}; #[derive(Debug)] pub struct DumpAutoloadCommand { base_command_data: BaseCommandData, } +impl_php_class!(DumpAutoloadCommand, r"Composer\Command\DumpAutoloadCommand"); + impl Default for DumpAutoloadCommand { fn default() -> Self { Self::new() @@ -325,10 +327,7 @@ impl Command for DumpAutoloadCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\DumpAutoloadCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for DumpAutoloadCommand { diff --git a/crates/shirabe/src/command/exec_command.rs b/crates/shirabe/src/command/exec_command.rs index 23e4b91f..d05b6c58 100644 --- a/crates/shirabe/src/command/exec_command.rs +++ b/crates/shirabe/src/command/exec_command.rs @@ -10,13 +10,15 @@ use crate::io::IOInterfaceImmutable; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{PhpMixed, RuntimeException, basename, chdir, getcwd, glob}; +use shirabe_php_shim::{PhpMixed, RuntimeException, basename, chdir, getcwd, glob, impl_php_class}; #[derive(Debug)] pub struct ExecCommand { base_command_data: BaseCommandData, } +impl_php_class!(ExecCommand, r"Composer\Command\ExecCommand"); + impl Default for ExecCommand { fn default() -> Self { Self::new() @@ -261,10 +263,7 @@ impl Command for ExecCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ExecCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ExecCommand { diff --git a/crates/shirabe/src/command/fund_command.rs b/crates/shirabe/src/command/fund_command.rs index 8e460f4b..bf5e281a 100644 --- a/crates/shirabe/src/command/fund_command.rs +++ b/crates/shirabe/src/command/fund_command.rs @@ -15,7 +15,7 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::formatter::OutputFormatter; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{PhpMixed, php_regex}; +use shirabe_php_shim::{PhpMixed, impl_php_class, php_regex}; use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::MatchAllConstraint; @@ -24,6 +24,8 @@ pub struct FundCommand { base_command_data: BaseCommandData, } +impl_php_class!(FundCommand, r"Composer\Command\FundCommand"); + impl Default for FundCommand { fn default() -> Self { Self::new() @@ -233,10 +235,7 @@ impl Command for FundCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\FundCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for FundCommand { diff --git a/crates/shirabe/src/command/global_command.rs b/crates/shirabe/src/command/global_command.rs index 2795b778..79037e55 100644 --- a/crates/shirabe/src/command/global_command.rs +++ b/crates/shirabe/src/command/global_command.rs @@ -19,7 +19,7 @@ use shirabe_external_packages::symfony::console::input::ArrayInput; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::input::StringInput; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{LogicException, RuntimeException, chdir, php_regex}; +use shirabe_php_shim::{LogicException, RuntimeException, chdir, impl_php_class, php_regex}; use std::path::Path; #[derive(Debug)] @@ -27,6 +27,8 @@ pub struct GlobalCommand { base_command_data: BaseCommandData, } +impl_php_class!(GlobalCommand, r"Composer\Command\GlobalCommand"); + impl Default for GlobalCommand { fn default() -> Self { Self::new() @@ -268,10 +270,7 @@ impl Command for GlobalCommand { base_command_initialize(self, input, output) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\GlobalCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for GlobalCommand { diff --git a/crates/shirabe/src/command/home_command.rs b/crates/shirabe/src/command/home_command.rs index d06dcda7..9a7902ae 100644 --- a/crates/shirabe/src/command/home_command.rs +++ b/crates/shirabe/src/command/home_command.rs @@ -15,14 +15,16 @@ use crate::util::ProcessExecutor; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::PhpMixed; use shirabe_php_shim::filter_var_url; +use shirabe_php_shim::{PhpMixed, impl_php_class}; #[derive(Debug)] pub struct HomeCommand { base_command_data: BaseCommandData, } +impl_php_class!(HomeCommand, r"Composer\Command\HomeCommand"); + impl Default for HomeCommand { fn default() -> Self { Self::new() @@ -269,10 +271,7 @@ impl Command for HomeCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\HomeCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for HomeCommand { diff --git a/crates/shirabe/src/command/init_command.rs b/crates/shirabe/src/command/init_command.rs index 53b8915b..ec3f38b5 100644 --- a/crates/shirabe/src/command/init_command.rs +++ b/crates/shirabe/src/command/init_command.rs @@ -28,8 +28,9 @@ use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ FILE_IGNORE_NEW_LINES, InvalidArgumentException, PHP_EOL, PHP_SERVER, PhpMixed, array_flip_strings, array_intersect_key, array_map, basename, empty, explode, file, - file_exists, file_get_contents, file_put_contents, get_current_user, implode, is_dir, - is_string, php_regex, preg_quote, realpath, str_replace, strpos, strtolower, trim, ucwords, + file_exists, file_get_contents, file_put_contents, get_current_user, impl_php_class, implode, + is_dir, is_string, php_regex, preg_quote, realpath, str_replace, strpos, strtolower, trim, + ucwords, }; use shirabe_spdx_licenses::SpdxLicenses; @@ -45,6 +46,8 @@ pub struct InitCommand { >, } +impl_php_class!(InitCommand, r"Composer\Command\InitCommand"); + impl PackageDiscoveryTrait for InitCommand { fn get_repos_mut( &self, @@ -908,10 +911,7 @@ impl Command for InitCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\InitCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for InitCommand { diff --git a/crates/shirabe/src/command/install_command.rs b/crates/shirabe/src/command/install_command.rs index fafeb363..944df2dd 100644 --- a/crates/shirabe/src/command/install_command.rs +++ b/crates/shirabe/src/command/install_command.rs @@ -16,13 +16,15 @@ use crate::util::HttpDownloader; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; #[derive(Debug)] pub struct InstallCommand { base_command_data: BaseCommandData, } +impl_php_class!(InstallCommand, r"Composer\Command\InstallCommand"); + impl Default for InstallCommand { fn default() -> Self { Self::new() @@ -278,10 +280,7 @@ impl Command for InstallCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\InstallCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for InstallCommand { diff --git a/crates/shirabe/src/command/licenses_command.rs b/crates/shirabe/src/command/licenses_command.rs index 6dc12559..002bce89 100644 --- a/crates/shirabe/src/command/licenses_command.rs +++ b/crates/shirabe/src/command/licenses_command.rs @@ -20,13 +20,15 @@ use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_external_packages::symfony::console::style::StyleInterface; use shirabe_external_packages::symfony::console::style::SymfonyStyle; -use shirabe_php_shim::{PhpMixed, RuntimeException, UnexpectedValueException}; +use shirabe_php_shim::{PhpMixed, RuntimeException, UnexpectedValueException, impl_php_class}; #[derive(Debug)] pub struct LicensesCommand { base_command_data: BaseCommandData, } +impl_php_class!(LicensesCommand, r"Composer\Command\LicensesCommand"); + impl Default for LicensesCommand { fn default() -> Self { Self::new() @@ -342,10 +344,7 @@ impl Command for LicensesCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\LicensesCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for LicensesCommand { diff --git a/crates/shirabe/src/command/outdated_command.rs b/crates/shirabe/src/command/outdated_command.rs index 202b0762..fe865dac 100644 --- a/crates/shirabe/src/command/outdated_command.rs +++ b/crates/shirabe/src/command/outdated_command.rs @@ -12,13 +12,15 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::ArrayInput; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; #[derive(Debug)] pub struct OutdatedCommand { base_command_data: BaseCommandData, } +impl_php_class!(OutdatedCommand, r"Composer\Command\OutdatedCommand"); + impl Default for OutdatedCommand { fn default() -> Self { Self::new() @@ -239,10 +241,7 @@ impl Command for OutdatedCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\OutdatedCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for OutdatedCommand { diff --git a/crates/shirabe/src/command/prohibits_command.rs b/crates/shirabe/src/command/prohibits_command.rs index fb37b7e7..305af738 100644 --- a/crates/shirabe/src/command/prohibits_command.rs +++ b/crates/shirabe/src/command/prohibits_command.rs @@ -17,6 +17,8 @@ pub struct ProhibitsCommand { colors: std::cell::RefCell<Vec<String>>, } +shirabe_php_shim::impl_php_class!(ProhibitsCommand, r"Composer\Command\ProhibitsCommand"); + impl Default for ProhibitsCommand { fn default() -> Self { Self::new() @@ -129,10 +131,7 @@ impl Command for ProhibitsCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ProhibitsCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ProhibitsCommand { diff --git a/crates/shirabe/src/command/reinstall_command.rs b/crates/shirabe/src/command/reinstall_command.rs index d47e4897..95fde5ae 100644 --- a/crates/shirabe/src/command/reinstall_command.rs +++ b/crates/shirabe/src/command/reinstall_command.rs @@ -19,13 +19,15 @@ use shirabe_external_packages::composer::pcre::Preg; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::InvalidArgumentException; +use shirabe_php_shim::{InvalidArgumentException, impl_php_class}; #[derive(Debug)] pub struct ReinstallCommand { base_command_data: BaseCommandData, } +impl_php_class!(ReinstallCommand, r"Composer\Command\ReinstallCommand"); + impl Default for ReinstallCommand { fn default() -> Self { Self::new() @@ -365,10 +367,7 @@ impl Command for ReinstallCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ReinstallCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ReinstallCommand { diff --git a/crates/shirabe/src/command/remove_command.rs b/crates/shirabe/src/command/remove_command.rs index 7d9e7d09..e611542f 100644 --- a/crates/shirabe/src/command/remove_command.rs +++ b/crates/shirabe/src/command/remove_command.rs @@ -22,13 +22,15 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::exception::InvalidArgumentException; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{PhpMixed, UnexpectedValueException, strtolower}; +use shirabe_php_shim::{PhpMixed, UnexpectedValueException, impl_php_class, strtolower}; #[derive(Debug)] pub struct RemoveCommand { base_command_data: BaseCommandData, } +impl_php_class!(RemoveCommand, r"Composer\Command\RemoveCommand"); + impl Default for RemoveCommand { fn default() -> Self { Self::new() @@ -722,10 +724,7 @@ impl Command for RemoveCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\RemoveCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for RemoveCommand { diff --git a/crates/shirabe/src/command/repository_command.rs b/crates/shirabe/src/command/repository_command.rs index d0add253..31d2de3f 100644 --- a/crates/shirabe/src/command/repository_command.rs +++ b/crates/shirabe/src/command/repository_command.rs @@ -15,8 +15,8 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ - InvalidArgumentException, PHP_URL_HOST, PhpMixed, RuntimeException, parse_url, php_regex, - strtolower, + InvalidArgumentException, PHP_URL_HOST, PhpMixed, RuntimeException, impl_php_class, parse_url, + php_regex, strtolower, }; #[derive(Debug)] @@ -28,6 +28,8 @@ pub struct RepositoryCommand { config_source: std::cell::RefCell<Option<JsonConfigSource>>, } +impl_php_class!(RepositoryCommand, r"Composer\Command\RepositoryCommand"); + impl Default for RepositoryCommand { fn default() -> Self { Self::new() @@ -588,10 +590,7 @@ impl Command for RepositoryCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\RepositoryCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for RepositoryCommand { diff --git a/crates/shirabe/src/command/require_command.rs b/crates/shirabe/src/command/require_command.rs index 5bed3d00..9d7d7553 100644 --- a/crates/shirabe/src/command/require_command.rs +++ b/crates/shirabe/src/command/require_command.rs @@ -39,7 +39,7 @@ use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ PhpMixed, RuntimeException, array_fill_keys, array_intersect, array_keys, array_map, array_merge, array_unique, empty, file_exists, file_get_contents, file_put_contents, filesize, - implode, is_writable, strtolower, unlink, + impl_php_class, implode, is_writable, strtolower, unlink, }; #[derive(Debug)] @@ -61,6 +61,8 @@ pub struct RequireCommand { std::cell::RefCell<IndexMap<String, std::rc::Rc<std::cell::RefCell<RepositorySet>>>>, } +impl_php_class!(RequireCommand, r"Composer\Command\RequireCommand"); + impl Default for RequireCommand { fn default() -> Self { Self::new() @@ -659,10 +661,7 @@ impl Command for RequireCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\RequireCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for RequireCommand { diff --git a/crates/shirabe/src/command/run_script_command.rs b/crates/shirabe/src/command/run_script_command.rs index b041f146..fe020de3 100644 --- a/crates/shirabe/src/command/run_script_command.rs +++ b/crates/shirabe/src/command/run_script_command.rs @@ -16,8 +16,8 @@ use shirabe_external_packages::symfony::console::exception::CommandNotFoundExcep use shirabe_external_packages::symfony::console::exception::namespace_not_found_exception::NamespaceNotFoundException; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::PhpMixed; use shirabe_php_shim::{InvalidArgumentException, RuntimeException}; +use shirabe_php_shim::{PhpMixed, impl_php_class}; #[derive(Debug)] pub struct RunScriptCommand { @@ -26,6 +26,8 @@ pub struct RunScriptCommand { script_events: Vec<&'static str>, } +impl_php_class!(RunScriptCommand, r"Composer\Command\RunScriptCommand"); + impl Default for RunScriptCommand { fn default() -> Self { Self::new() @@ -353,10 +355,7 @@ impl Command for RunScriptCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\RunScriptCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for RunScriptCommand { diff --git a/crates/shirabe/src/command/script_alias_command.rs b/crates/shirabe/src/command/script_alias_command.rs index 33f3ac3b..e6a13545 100644 --- a/crates/shirabe/src/command/script_alias_command.rs +++ b/crates/shirabe/src/command/script_alias_command.rs @@ -10,7 +10,9 @@ use shirabe_external_packages::composer::pcre::Preg; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{InvalidArgumentException, LogicException, PhpMixed, is_string, php_regex}; +use shirabe_php_shim::{ + InvalidArgumentException, LogicException, PhpMixed, impl_php_class, is_string, php_regex, +}; #[derive(Debug)] pub struct ScriptAliasCommand { @@ -21,6 +23,8 @@ pub struct ScriptAliasCommand { aliases: Vec<String>, } +impl_php_class!(ScriptAliasCommand, r"Composer\Command\ScriptAliasCommand"); + impl ScriptAliasCommand { pub fn new( script: String, @@ -176,10 +180,7 @@ impl Command for ScriptAliasCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ScriptAliasCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ScriptAliasCommand { diff --git a/crates/shirabe/src/command/search_command.rs b/crates/shirabe/src/command/search_command.rs index 0ed220e0..2e0f95da 100644 --- a/crates/shirabe/src/command/search_command.rs +++ b/crates/shirabe/src/command/search_command.rs @@ -18,13 +18,17 @@ use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::formatter::OutputFormatter; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{InvalidArgumentException, PhpMixed, implode, in_array, preg_quote, substr}; +use shirabe_php_shim::{ + InvalidArgumentException, PhpMixed, impl_php_class, implode, in_array, preg_quote, substr, +}; #[derive(Debug)] pub struct SearchCommand { base_command_data: BaseCommandData, } +impl_php_class!(SearchCommand, r"Composer\Command\SearchCommand"); + impl Default for SearchCommand { fn default() -> Self { Self::new() @@ -311,10 +315,7 @@ impl Command for SearchCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\SearchCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for SearchCommand { diff --git a/crates/shirabe/src/command/self_update_command.rs b/crates/shirabe/src/command/self_update_command.rs index 59c44830..55aca0dc 100644 --- a/crates/shirabe/src/command/self_update_command.rs +++ b/crates/shirabe/src/command/self_update_command.rs @@ -10,13 +10,15 @@ use crate::io::io_interface; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpMixed, impl_php_class}; #[derive(Debug)] pub struct SelfUpdateCommand { base_command_data: BaseCommandData, } +impl_php_class!(SelfUpdateCommand, r"Composer\Command\SelfUpdateCommand"); + impl Default for SelfUpdateCommand { fn default() -> Self { Self::new() @@ -99,10 +101,7 @@ impl Command for SelfUpdateCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\SelfUpdateCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for SelfUpdateCommand { diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs index 55ec5ddf..4cc0c204 100644 --- a/crates/shirabe/src/command/show_command.rs +++ b/crates/shirabe/src/command/show_command.rs @@ -44,8 +44,8 @@ use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ DATE_ATOM, InvalidArgumentException, LogicException, PhpMixed, UnexpectedValueException, - array_search, date, date_format_to_strftime, extension_loaded, in_array, php_regex, realpath, - strtolower, version_compare, + array_search, date, date_format_to_strftime, extension_loaded, impl_php_class, in_array, + php_regex, realpath, strtolower, version_compare, }; use shirabe_semver::Semver; use shirabe_semver::constraint::AnyConstraint; @@ -60,6 +60,8 @@ pub struct ShowCommand { repository_set: std::cell::RefCell<Option<std::rc::Rc<std::cell::RefCell<RepositorySet>>>>, } +impl_php_class!(ShowCommand, r"Composer\Command\ShowCommand"); + impl Default for ShowCommand { fn default() -> Self { Self::new() @@ -1451,10 +1453,7 @@ impl Command for ShowCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ShowCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ShowCommand { diff --git a/crates/shirabe/src/command/status_command.rs b/crates/shirabe/src/command/status_command.rs index 42ba74eb..5bcb7dd7 100644 --- a/crates/shirabe/src/command/status_command.rs +++ b/crates/shirabe/src/command/status_command.rs @@ -22,6 +22,8 @@ pub struct StatusCommand { base_command_data: BaseCommandData, } +shirabe_php_shim::impl_php_class!(StatusCommand, r"Composer\Command\StatusCommand"); + impl Default for StatusCommand { fn default() -> Self { Self::new() @@ -393,10 +395,7 @@ impl Command for StatusCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\StatusCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for StatusCommand { diff --git a/crates/shirabe/src/command/suggests_command.rs b/crates/shirabe/src/command/suggests_command.rs index 65493f2f..89df4546 100644 --- a/crates/shirabe/src/command/suggests_command.rs +++ b/crates/shirabe/src/command/suggests_command.rs @@ -15,13 +15,15 @@ use indexmap::IndexMap; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; -use shirabe_php_shim::{PhpMixed, empty, in_array}; +use shirabe_php_shim::{PhpMixed, empty, impl_php_class, in_array}; #[derive(Debug)] pub struct SuggestsCommand { base_command_data: BaseCommandData, } +impl_php_class!(SuggestsCommand, r"Composer\Command\SuggestsCommand"); + impl Default for SuggestsCommand { fn default() -> Self { Self::new() @@ -228,10 +230,7 @@ impl Command for SuggestsCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\SuggestsCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for SuggestsCommand { diff --git a/crates/shirabe/src/command/update_command.rs b/crates/shirabe/src/command/update_command.rs index b7cced87..8dcf7061 100644 --- a/crates/shirabe/src/command/update_command.rs +++ b/crates/shirabe/src/command/update_command.rs @@ -34,7 +34,8 @@ use shirabe_external_packages::symfony::console::input::InputInterface; use shirabe_external_packages::symfony::console::output::OutputInterface; use shirabe_php_shim::{ InvalidArgumentException, PhpMixed, RuntimeException, array_filter, array_intersect, - array_keys, array_merge_map, array_search_in_vec, in_array, php_regex, strtolower, + array_keys, array_merge_map, array_search_in_vec, impl_php_class, in_array, php_regex, + strtolower, }; use shirabe_semver::Intervals; use shirabe_semver::constraint::MultiConstraint; @@ -44,6 +45,8 @@ pub struct UpdateCommand { base_command_data: BaseCommandData, } +impl_php_class!(UpdateCommand, r"Composer\Command\UpdateCommand"); + impl Default for UpdateCommand { fn default() -> Self { Self::new() @@ -587,10 +590,7 @@ impl Command for UpdateCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\UpdateCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for UpdateCommand { diff --git a/crates/shirabe/src/command/validate_command.rs b/crates/shirabe/src/command/validate_command.rs index 061eed2c..6e84c9d9 100644 --- a/crates/shirabe/src/command/validate_command.rs +++ b/crates/shirabe/src/command/validate_command.rs @@ -22,6 +22,8 @@ pub struct ValidateCommand { base_command_data: BaseCommandData, } +shirabe_php_shim::impl_php_class!(ValidateCommand, r"Composer\Command\ValidateCommand"); + impl Default for ValidateCommand { fn default() -> Self { Self::new() @@ -315,10 +317,7 @@ impl Command for ValidateCommand { crate::command::base_command::base_command_complete(self, input, suggestions) } - shirabe_external_packages::delegate_command_trait_impls_to_inner!( - base_command_data, - "Composer\\Command\\ValidateCommand" - ); + shirabe_external_packages::delegate_command_trait_impls_to_inner!(base_command_data); } impl BaseCommand for ValidateCommand { diff --git a/crates/shirabe/src/repository/vcs.rs b/crates/shirabe/src/repository/vcs.rs index 5c60e0a9..920fefa3 100644 --- a/crates/shirabe/src/repository/vcs.rs +++ b/crates/shirabe/src/repository/vcs.rs @@ -26,7 +26,7 @@ use crate::config::Config; use crate::io::IOInterface; use crate::util::{HttpDownloader, ProcessExecutor}; use indexmap::IndexMap; -use shirabe_php_shim::PhpMixed; +use shirabe_php_shim::{PhpClass, PhpMixed}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum VcsDriverKind { @@ -136,19 +136,21 @@ impl VcsDriverKind { VcsDriverKind::Svn => SvnDriver::supports(io, config, url, deep), } } +} - /// PHP fully-qualified `class-string`, used as the fallback driver name in `getRepoName()`. - pub fn php_class_name(self) -> &'static str { +impl PhpClass for VcsDriverKind { + /// Used as the fallback driver name in `getRepoName()`. + fn php_class_name(&self) -> &'static str { match self { - VcsDriverKind::GitHub => "Composer\\Repository\\Vcs\\GitHubDriver", - VcsDriverKind::GitLab => "Composer\\Repository\\Vcs\\GitLabDriver", - VcsDriverKind::GitBitbucket => "Composer\\Repository\\Vcs\\GitBitbucketDriver", - VcsDriverKind::Forgejo => "Composer\\Repository\\Vcs\\ForgejoDriver", - VcsDriverKind::Git => "Composer\\Repository\\Vcs\\GitDriver", - VcsDriverKind::Hg => "Composer\\Repository\\Vcs\\HgDriver", - VcsDriverKind::Perforce => "Composer\\Repository\\Vcs\\PerforceDriver", - VcsDriverKind::Fossil => "Composer\\Repository\\Vcs\\FossilDriver", - VcsDriverKind::Svn => "Composer\\Repository\\Vcs\\SvnDriver", + VcsDriverKind::GitHub => r"Composer\Repository\Vcs\GitHubDriver", + VcsDriverKind::GitLab => r"Composer\Repository\Vcs\GitLabDriver", + VcsDriverKind::GitBitbucket => r"Composer\Repository\Vcs\GitBitbucketDriver", + VcsDriverKind::Forgejo => r"Composer\Repository\Vcs\ForgejoDriver", + VcsDriverKind::Git => r"Composer\Repository\Vcs\GitDriver", + VcsDriverKind::Hg => r"Composer\Repository\Vcs\HgDriver", + VcsDriverKind::Perforce => r"Composer\Repository\Vcs\PerforceDriver", + VcsDriverKind::Fossil => r"Composer\Repository\Vcs\FossilDriver", + VcsDriverKind::Svn => r"Composer\Repository\Vcs\SvnDriver", } } } diff --git a/crates/shirabe/src/repository/vcs_repository.rs b/crates/shirabe/src/repository/vcs_repository.rs index b7ce1a6c..9b1b0d84 100644 --- a/crates/shirabe/src/repository/vcs_repository.rs +++ b/crates/shirabe/src/repository/vcs_repository.rs @@ -29,7 +29,7 @@ use crate::util::Url; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; use shirabe_php_shim::{ - InvalidArgumentException, PhpMixed, in_array, php_regex, str_replace, strpos, + InvalidArgumentException, PhpClass, PhpMixed, in_array, php_regex, str_replace, strpos, }; use shirabe_semver::constraint::SimpleConstraint; |
