aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src')
-rw-r--r--crates/shirabe/src/command/exec_command.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/crates/shirabe/src/command/exec_command.rs b/crates/shirabe/src/command/exec_command.rs
index a394ac4..659b8f7 100644
--- a/crates/shirabe/src/command/exec_command.rs
+++ b/crates/shirabe/src/command/exec_command.rs
@@ -3,6 +3,7 @@
use crate::command::BaseCommand;
use crate::command::BaseCommandData;
use crate::command::base_command::base_command_initialize;
+use crate::console::Application;
use crate::console::input::InputArgument;
use crate::console::input::InputOption;
use crate::io::IOInterfaceImmutable;
@@ -195,10 +196,16 @@ impl Command for ExecCommand {
0,
);
- // TODO(phase-c): getApplication()->getInitialWorkingDirectory() needs the shared shirabe
- // Application handle (deferred with the Application shared-ownership work). Until then the
- // working-directory restore is skipped.
- let initial_working_directory: Option<String> = None;
+ let initial_working_directory = self.get_application().and_then(|application| {
+ let application = application.borrow();
+ let app_dyn: &dyn shirabe_external_packages::symfony::console::application::Application =
+ &*application;
+ app_dyn
+ .as_any()
+ .downcast_ref::<Application>()
+ .expect("a Composer command's application is a shirabe Application")
+ .get_initial_working_directory()
+ });
if let Some(ref iwd) = initial_working_directory
&& getcwd().as_deref() != Some(iwd.as_str())
{