diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-02 16:16:51 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-02 16:16:51 +0900 |
| commit | 6047bcc3e63ab84dfc67bce94f402f1bfa3f58d5 (patch) | |
| tree | e0fc935abf0cebb2c557581fbfd098bdef35d558 /crates/shirabe/src/command | |
| parent | 4361059d3bb27916179acfebb8889f1863319bb9 (diff) | |
| download | php-shirabe-6047bcc3e63ab84dfc67bce94f402f1bfa3f58d5.tar.gz php-shirabe-6047bcc3e63ab84dfc67bce94f402f1bfa3f58d5.tar.zst php-shirabe-6047bcc3e63ab84dfc67bce94f402f1bfa3f58d5.zip | |
refactor(php-shim): introduce PhpClass for reporting PHP class names
Rust has no runtime class name, so `Command::get_class` existed purely to
let each command hand back its PHP class name, supplied through the
two-argument variant of `delegate_command_trait_impls_to_inner!` at the
impl site. Replace it with a general `PhpClass` trait plus an
`impl_php_class!` macro, so the name is stated once next to the type
definition and the mechanism is reusable outside commands.
`Command` gains `PhpClass` as a supertrait and drops `get_class`, and
`VcsDriverKind`'s hand-rolled `php_class_name` table moves onto the trait.
Behavior is unchanged: the same class-name strings are reported, and the
base command state still panics when asked for a name it cannot supply.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/command')
34 files changed, 156 insertions, 173 deletions
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 { |
