aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/command.rs27
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs14
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs12
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/help_command.rs12
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/list_command.rs12
-rw-r--r--crates/shirabe-php-shim/src/lib.rs27
-rw-r--r--crates/shirabe/src/command/about_command.rs7
-rw-r--r--crates/shirabe/src/command/archive_command.rs9
-rw-r--r--crates/shirabe/src/command/audit_command.rs9
-rw-r--r--crates/shirabe/src/command/base_command.rs14
-rw-r--r--crates/shirabe/src/command/bump_command.rs10
-rw-r--r--crates/shirabe/src/command/check_platform_reqs_command.rs12
-rw-r--r--crates/shirabe/src/command/clear_cache_command.rs9
-rw-r--r--crates/shirabe/src/command/config_command.rs13
-rw-r--r--crates/shirabe/src/command/create_project_command.rs14
-rw-r--r--crates/shirabe/src/command/depends_command.rs7
-rw-r--r--crates/shirabe/src/command/diagnose_command.rs12
-rw-r--r--crates/shirabe/src/command/dump_autoload_command.rs9
-rw-r--r--crates/shirabe/src/command/exec_command.rs9
-rw-r--r--crates/shirabe/src/command/fund_command.rs9
-rw-r--r--crates/shirabe/src/command/global_command.rs9
-rw-r--r--crates/shirabe/src/command/home_command.rs9
-rw-r--r--crates/shirabe/src/command/init_command.rs12
-rw-r--r--crates/shirabe/src/command/install_command.rs9
-rw-r--r--crates/shirabe/src/command/licenses_command.rs9
-rw-r--r--crates/shirabe/src/command/outdated_command.rs9
-rw-r--r--crates/shirabe/src/command/prohibits_command.rs7
-rw-r--r--crates/shirabe/src/command/reinstall_command.rs9
-rw-r--r--crates/shirabe/src/command/remove_command.rs9
-rw-r--r--crates/shirabe/src/command/repository_command.rs11
-rw-r--r--crates/shirabe/src/command/require_command.rs9
-rw-r--r--crates/shirabe/src/command/run_script_command.rs9
-rw-r--r--crates/shirabe/src/command/script_alias_command.rs11
-rw-r--r--crates/shirabe/src/command/search_command.rs11
-rw-r--r--crates/shirabe/src/command/self_update_command.rs9
-rw-r--r--crates/shirabe/src/command/show_command.rs11
-rw-r--r--crates/shirabe/src/command/status_command.rs7
-rw-r--r--crates/shirabe/src/command/suggests_command.rs9
-rw-r--r--crates/shirabe/src/command/update_command.rs10
-rw-r--r--crates/shirabe/src/command/validate_command.rs7
-rw-r--r--crates/shirabe/src/repository/vcs.rs26
-rw-r--r--crates/shirabe/src/repository/vcs_repository.rs2
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;