aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-20 08:33:49 +0900
committernsfisis <nsfisis@gmail.com>2026-05-20 08:33:57 +0900
commitf31b101ce1e921a026ba234b1f0a83b0392bc118 (patch)
treeb7ac2aa84d71ebd162cc21aeab0240e7e0544988 /crates/shirabe-external-packages
parent5e31fa33c3b5cf726a57a063b8e7a070869250fe (diff)
downloadphp-shirabe-f31b101ce1e921a026ba234b1f0a83b0392bc118.tar.gz
php-shirabe-f31b101ce1e921a026ba234b1f0a83b0392bc118.tar.zst
php-shirabe-f31b101ce1e921a026ba234b1f0a83b0392bc118.zip
fix(compile): fix all remaining compile errors
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages')
-rw-r--r--crates/shirabe-external-packages/Cargo.toml1
-rw-r--r--crates/shirabe-external-packages/src/composer/semver/compiling_matcher.rs8
-rw-r--r--crates/shirabe-external-packages/src/composer/semver/intervals.rs13
-rw-r--r--crates/shirabe-external-packages/src/composer/util/composer_mirror.rs6
-rw-r--r--crates/shirabe-external-packages/src/react/promise/promise_interface.rs29
-rw-r--r--crates/shirabe-external-packages/src/seld/json_lint/duplicate_key_exception.rs10
-rw-r--r--crates/shirabe-external-packages/src/seld/json_lint/json_parser.rs8
-rw-r--r--crates/shirabe-external-packages/src/seld/json_lint/parsing_exception.rs15
-rw-r--r--crates/shirabe-external-packages/src/seld/signal/signal_handler.rs8
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/console/application.rs12
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/console/helper/helper_set.rs2
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/console/helper/progress_bar.rs4
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/console/output/console_output.rs10
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/console/output/output_interface.rs22
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/filesystem/exception/io_exception.rs15
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/finder/finder.rs41
-rw-r--r--crates/shirabe-external-packages/src/symfony/component/process/process.rs4
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs2
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/helper/table.rs7
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs10
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs4
21 files changed, 204 insertions, 27 deletions
diff --git a/crates/shirabe-external-packages/Cargo.toml b/crates/shirabe-external-packages/Cargo.toml
index 2c32ed3..952f263 100644
--- a/crates/shirabe-external-packages/Cargo.toml
+++ b/crates/shirabe-external-packages/Cargo.toml
@@ -7,3 +7,4 @@ edition.workspace = true
anyhow.workspace = true
indexmap.workspace = true
shirabe-php-shim = { path = "../shirabe-php-shim" }
+shirabe-semver = { path = "../shirabe-semver" }
diff --git a/crates/shirabe-external-packages/src/composer/semver/compiling_matcher.rs b/crates/shirabe-external-packages/src/composer/semver/compiling_matcher.rs
index 5a8f09d..dc27a32 100644
--- a/crates/shirabe-external-packages/src/composer/semver/compiling_matcher.rs
+++ b/crates/shirabe-external-packages/src/composer/semver/compiling_matcher.rs
@@ -1,16 +1,18 @@
+use shirabe_semver::constraint::constraint_interface::ConstraintInterface;
+
#[derive(Debug)]
pub struct CompilingMatcher;
impl CompilingMatcher {
- pub fn r#match(_constraint: &dyn std::any::Any, _package: &dyn std::any::Any) -> bool {
+ pub fn r#match(_constraint: &dyn ConstraintInterface, _package: &dyn std::any::Any) -> bool {
todo!()
}
- pub fn matches(_constraint: &dyn std::any::Any, _operator: &str, _version: &str) -> bool {
+ pub fn matches(_constraint: &dyn ConstraintInterface, _operator: i64, _version: &str) -> bool {
todo!()
}
- pub fn match_(_constraint: &dyn std::any::Any, _operator: &str, _version: &str) -> bool {
+ pub fn match_(_constraint: &dyn ConstraintInterface, _operator: i64, _version: &str) -> bool {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/composer/semver/intervals.rs b/crates/shirabe-external-packages/src/composer/semver/intervals.rs
index d0a736c..04f7ee7 100644
--- a/crates/shirabe-external-packages/src/composer/semver/intervals.rs
+++ b/crates/shirabe-external-packages/src/composer/semver/intervals.rs
@@ -1,25 +1,28 @@
use shirabe_php_shim::PhpMixed;
+use shirabe_semver::constraint::constraint_interface::ConstraintInterface;
#[derive(Debug)]
pub struct Intervals;
impl Intervals {
pub fn is_subset_of(
- _constraint_a: &dyn std::any::Any,
- _constraint_b: &dyn std::any::Any,
+ _constraint_a: &dyn ConstraintInterface,
+ _constraint_b: &dyn ConstraintInterface,
) -> anyhow::Result<bool> {
todo!()
}
- pub fn compact_constraint(_constraint: &dyn std::any::Any) -> Box<dyn std::any::Any> {
+ pub fn compact_constraint(
+ _constraint: Box<dyn ConstraintInterface>,
+ ) -> Box<dyn ConstraintInterface> {
todo!()
}
- pub fn compact(_constraint: &dyn std::any::Any) -> Box<dyn std::any::Any> {
+ pub fn compact(_constraint: &dyn ConstraintInterface) -> Box<dyn ConstraintInterface> {
todo!()
}
- pub fn get(_constraint: &dyn std::any::Any) -> anyhow::Result<PhpMixed> {
+ pub fn get(_constraint: &dyn ConstraintInterface) -> anyhow::Result<PhpMixed> {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/composer/util/composer_mirror.rs b/crates/shirabe-external-packages/src/composer/util/composer_mirror.rs
index 66e363c..147abd1 100644
--- a/crates/shirabe-external-packages/src/composer/util/composer_mirror.rs
+++ b/crates/shirabe-external-packages/src/composer/util/composer_mirror.rs
@@ -3,12 +3,12 @@ pub struct ComposerMirror;
impl ComposerMirror {
pub fn process_url(
- _mirror: &str,
+ _mirror_url: &str,
_package_name: &str,
_version: &str,
_reference: Option<&str>,
- _url: &str,
- _custom_filename: Option<&str>,
+ _r_type: Option<&str>,
+ _pretty_version: Option<&str>,
) -> String {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/react/promise/promise_interface.rs b/crates/shirabe-external-packages/src/react/promise/promise_interface.rs
index bb604a8..5836945 100644
--- a/crates/shirabe-external-packages/src/react/promise/promise_interface.rs
+++ b/crates/shirabe-external-packages/src/react/promise/promise_interface.rs
@@ -6,4 +6,33 @@ pub trait PromiseInterface {
on_fulfilled: Option<Box<dyn FnOnce(Option<PhpMixed>) -> Option<PhpMixed>>>,
on_rejected: Option<Box<dyn FnOnce(Option<PhpMixed>) -> Option<PhpMixed>>>,
) -> Box<dyn PromiseInterface>;
+
+ /// PHP closure shape: `fn(mixed): mixed`. Convenience wrapper around `then`
+ /// for call sites that don't deal in `Option<PhpMixed>`.
+ fn then_with(
+ &self,
+ _on_fulfilled: Option<Box<dyn FnOnce(PhpMixed) -> PhpMixed>>,
+ _on_rejected: Option<Box<dyn FnOnce(PhpMixed) -> PhpMixed>>,
+ ) -> Box<dyn PromiseInterface> {
+ todo!()
+ }
+
+ /// PHP closure shape: `fn(mixed): mixed`, returning a `Box<dyn PromiseInterface>`.
+ fn then_boxed(
+ &self,
+ _on_fulfilled: Option<Box<dyn FnOnce(PhpMixed) -> Box<dyn PromiseInterface>>>,
+ _on_rejected: Option<Box<dyn FnOnce(PhpMixed) -> Box<dyn PromiseInterface>>>,
+ ) -> Box<dyn PromiseInterface> {
+ todo!()
+ }
+
+ /// Variant used by composer_repository where accept returns PhpMixed but reject returns
+ /// an error/PhpMixed and the result is the same Promise pipeline.
+ fn then_with_reject_boxed(
+ &self,
+ _on_fulfilled: Box<dyn FnOnce(PhpMixed) -> anyhow::Result<PhpMixed>>,
+ _on_rejected: Box<dyn FnOnce(anyhow::Error) -> anyhow::Result<PhpMixed>>,
+ ) -> Box<dyn PromiseInterface> {
+ todo!()
+ }
}
diff --git a/crates/shirabe-external-packages/src/seld/json_lint/duplicate_key_exception.rs b/crates/shirabe-external-packages/src/seld/json_lint/duplicate_key_exception.rs
index 9e35396..df61a91 100644
--- a/crates/shirabe-external-packages/src/seld/json_lint/duplicate_key_exception.rs
+++ b/crates/shirabe-external-packages/src/seld/json_lint/duplicate_key_exception.rs
@@ -1,7 +1,17 @@
+use indexmap::IndexMap;
+use shirabe_php_shim::PhpMixed;
+
#[derive(Debug)]
pub struct DuplicateKeyException {
pub message: String,
pub code: i64,
+ pub details: IndexMap<String, PhpMixed>,
+}
+
+impl DuplicateKeyException {
+ pub fn get_details(&self) -> &IndexMap<String, PhpMixed> {
+ &self.details
+ }
}
impl std::fmt::Display for DuplicateKeyException {
diff --git a/crates/shirabe-external-packages/src/seld/json_lint/json_parser.rs b/crates/shirabe-external-packages/src/seld/json_lint/json_parser.rs
index 31f64df..dbff9a0 100644
--- a/crates/shirabe-external-packages/src/seld/json_lint/json_parser.rs
+++ b/crates/shirabe-external-packages/src/seld/json_lint/json_parser.rs
@@ -19,4 +19,12 @@ impl JsonParser {
pub fn parse(&self, _json: &str, _flags: u32) -> anyhow::Result<PhpMixed> {
todo!()
}
+
+ /// PHP: JsonParser::lint() — returns null on success, ParsingException on failure.
+ pub fn lint(
+ &mut self,
+ _json: &str,
+ ) -> Option<crate::seld::json_lint::parsing_exception::ParsingException> {
+ todo!()
+ }
}
diff --git a/crates/shirabe-external-packages/src/seld/json_lint/parsing_exception.rs b/crates/shirabe-external-packages/src/seld/json_lint/parsing_exception.rs
index 3ec6b6b..b756c1b 100644
--- a/crates/shirabe-external-packages/src/seld/json_lint/parsing_exception.rs
+++ b/crates/shirabe-external-packages/src/seld/json_lint/parsing_exception.rs
@@ -4,6 +4,21 @@ pub struct ParsingException {
pub code: i64,
}
+impl ParsingException {
+ pub fn new(message: String, _details: Option<shirabe_php_shim::PhpMixed>) -> Self {
+ Self { message, code: 0 }
+ }
+
+ pub fn get_message(&self) -> &str {
+ &self.message
+ }
+
+ pub fn get_details(&self) -> indexmap::IndexMap<String, shirabe_php_shim::PhpMixed> {
+ // TODO(phase-b): PHP ParsingException exposes ['text', 'line', 'token'] details
+ indexmap::IndexMap::new()
+ }
+}
+
impl std::fmt::Display for ParsingException {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.message)
diff --git a/crates/shirabe-external-packages/src/seld/signal/signal_handler.rs b/crates/shirabe-external-packages/src/seld/signal/signal_handler.rs
index 3c53066..5b5254a 100644
--- a/crates/shirabe-external-packages/src/seld/signal/signal_handler.rs
+++ b/crates/shirabe-external-packages/src/seld/signal/signal_handler.rs
@@ -13,4 +13,12 @@ impl SignalHandler {
pub fn unregister(&self) {
todo!()
}
+
+ pub fn exit_with_last_signal(&self) {
+ todo!()
+ }
+
+ pub fn is_triggered(&self) -> bool {
+ todo!()
+ }
}
diff --git a/crates/shirabe-external-packages/src/symfony/component/console/application.rs b/crates/shirabe-external-packages/src/symfony/component/console/application.rs
index bc64521..1197792 100644
--- a/crates/shirabe-external-packages/src/symfony/component/console/application.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/console/application.rs
@@ -89,4 +89,16 @@ impl Application {
pub fn is_single_command(&self) -> bool {
todo!()
}
+
+ pub fn render_throwable(&self, _exception: &anyhow::Error, _output: &mut dyn OutputInterface) {
+ todo!()
+ }
+
+ pub fn set_catch_errors(&mut self, _catch_errors: bool) {
+ todo!()
+ }
+
+ pub fn has(&self, _name: &str) -> bool {
+ todo!()
+ }
}
diff --git a/crates/shirabe-external-packages/src/symfony/component/console/helper/helper_set.rs b/crates/shirabe-external-packages/src/symfony/component/console/helper/helper_set.rs
index f8b2e24..26af492 100644
--- a/crates/shirabe-external-packages/src/symfony/component/console/helper/helper_set.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/console/helper/helper_set.rs
@@ -8,7 +8,7 @@ impl HelperSet {
todo!()
}
- pub fn get(&self, _name: &str) -> Option<PhpMixed> {
+ pub fn get(&self, _name: &str) -> PhpMixed {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/symfony/component/console/helper/progress_bar.rs b/crates/shirabe-external-packages/src/symfony/component/console/helper/progress_bar.rs
index 64835bb..b3aefef 100644
--- a/crates/shirabe-external-packages/src/symfony/component/console/helper/progress_bar.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/console/helper/progress_bar.rs
@@ -31,4 +31,8 @@ impl ProgressBar {
pub fn get_max_steps(&self) -> i64 {
todo!()
}
+
+ pub fn set_progress(&mut self, _step: i64) {
+ todo!()
+ }
}
diff --git a/crates/shirabe-external-packages/src/symfony/component/console/output/console_output.rs b/crates/shirabe-external-packages/src/symfony/component/console/output/console_output.rs
index 73c5c46..f9792f0 100644
--- a/crates/shirabe-external-packages/src/symfony/component/console/output/console_output.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/console/output/console_output.rs
@@ -19,13 +19,13 @@ impl ConsoleOutput {
}
impl OutputInterface for ConsoleOutput {
- fn write(&mut self, _messages: &str, _newline: bool, _type: i64) {
+ fn write(&self, _messages: &str, _newline: bool, _type: i64) {
todo!()
}
- fn writeln(&mut self, _messages: &str, _type: i64) {
+ fn writeln(&self, _messages: &str, _type: i64) {
todo!()
}
- fn set_verbosity(&mut self, _level: i64) {
+ fn set_verbosity(&self, _level: i64) {
todo!()
}
fn get_verbosity(&self) -> i64 {
@@ -43,13 +43,13 @@ impl OutputInterface for ConsoleOutput {
fn is_debug(&self) -> bool {
todo!()
}
- fn set_decorated(&mut self, _decorated: bool) {
+ fn set_decorated(&self, _decorated: bool) {
todo!()
}
fn is_decorated(&self) -> bool {
todo!()
}
- fn set_formatter(&mut self, _formatter: OutputFormatter) {
+ fn set_formatter(&self, _formatter: OutputFormatter) {
todo!()
}
fn get_formatter(&self) -> &OutputFormatter {
diff --git a/crates/shirabe-external-packages/src/symfony/component/console/output/output_interface.rs b/crates/shirabe-external-packages/src/symfony/component/console/output/output_interface.rs
index 62a95bb..22a4b17 100644
--- a/crates/shirabe-external-packages/src/symfony/component/console/output/output_interface.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/console/output/output_interface.rs
@@ -1,18 +1,30 @@
use crate::symfony::component::console::formatter::output_formatter::OutputFormatter;
pub trait OutputInterface {
- fn write(&mut self, messages: &str, newline: bool, r#type: i64);
- fn writeln(&mut self, messages: &str, r#type: i64);
- fn set_verbosity(&mut self, level: i64);
+ // PHP class semantics: OutputInterface methods take &self with interior mutability,
+ // because output objects are shared by reference across the PHP code.
+ fn write(&self, messages: &str, newline: bool, r#type: i64);
+ fn writeln(&self, messages: &str, r#type: i64);
+ fn set_verbosity(&self, level: i64);
fn get_verbosity(&self) -> i64;
fn is_quiet(&self) -> bool;
fn is_verbose(&self) -> bool;
fn is_very_verbose(&self) -> bool;
fn is_debug(&self) -> bool;
- fn set_decorated(&mut self, decorated: bool);
+ fn set_decorated(&self, decorated: bool);
fn is_decorated(&self) -> bool;
- fn set_formatter(&mut self, formatter: OutputFormatter);
+ fn set_formatter(&self, formatter: OutputFormatter);
fn get_formatter(&self) -> &OutputFormatter;
+
+ /// PHP: `$output instanceof ConsoleOutputInterface`. Default false; ConsoleOutput overrides.
+ fn is_console_output_interface(&self) -> bool {
+ false
+ }
+
+ /// PHP: only StreamOutput exposes `getStream()`. Default panics for outputs without one.
+ fn get_stream(&self) -> shirabe_php_shim::PhpResource {
+ todo!("get_stream not available on this OutputInterface implementation")
+ }
}
pub const VERBOSITY_QUIET: i64 = 16;
diff --git a/crates/shirabe-external-packages/src/symfony/component/filesystem/exception/io_exception.rs b/crates/shirabe-external-packages/src/symfony/component/filesystem/exception/io_exception.rs
index 3ffcc9c..a5f2844 100644
--- a/crates/shirabe-external-packages/src/symfony/component/filesystem/exception/io_exception.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/filesystem/exception/io_exception.rs
@@ -5,6 +5,21 @@ pub struct IOException {
pub path: Option<String>,
}
+impl IOException {
+ pub fn new(
+ message: String,
+ code: i64,
+ _previous: Option<Box<dyn std::error::Error + Send + Sync>>,
+ path: Option<String>,
+ ) -> Self {
+ Self {
+ message,
+ code,
+ path,
+ }
+ }
+}
+
impl std::fmt::Display for IOException {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.message)
diff --git a/crates/shirabe-external-packages/src/symfony/component/finder/finder.rs b/crates/shirabe-external-packages/src/symfony/component/finder/finder.rs
index 8437ba6..466f17e 100644
--- a/crates/shirabe-external-packages/src/symfony/component/finder/finder.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/finder/finder.rs
@@ -1,5 +1,15 @@
use crate::symfony::component::finder::spl_file_info::SplFileInfo;
+/// Helper trait so `Finder::exclude` accepts both single strings and slices
+/// (PHP's variadic / array argument compatibility).
+pub trait IntoFinderExclude {}
+impl IntoFinderExclude for &str {}
+impl IntoFinderExclude for String {}
+impl IntoFinderExclude for &String {}
+impl IntoFinderExclude for &[String] {}
+impl IntoFinderExclude for &Vec<String> {}
+impl IntoFinderExclude for Vec<String> {}
+
#[derive(Debug)]
pub struct Finder;
@@ -38,7 +48,7 @@ impl Finder {
todo!()
}
- pub fn exclude(&mut self, _exclude: &[String]) -> &mut Self {
+ pub fn exclude<E: IntoFinderExclude>(&mut self, _exclude: E) -> &mut Self {
todo!()
}
@@ -54,10 +64,21 @@ impl Finder {
todo!()
}
+ pub fn not_path(&mut self, _pattern: &str) -> &mut Self {
+ todo!()
+ }
+
pub fn name(&mut self, _pattern: &str) -> &mut Self {
todo!()
}
+ pub fn sort<F>(&mut self, _comparator: F) -> &mut Self
+ where
+ F: FnMut(&SplFileInfo, &SplFileInfo) -> i64,
+ {
+ todo!()
+ }
+
pub fn sort_by_name(&mut self) -> &mut Self {
todo!()
}
@@ -78,6 +99,24 @@ impl Finder {
todo!();
std::iter::empty()
}
+
+ /// PHP: Finder implements Countable.
+ pub fn len(&self) -> usize {
+ todo!()
+ }
+
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+}
+
+impl IntoIterator for &Finder {
+ type Item = SplFileInfo;
+ type IntoIter = std::vec::IntoIter<SplFileInfo>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ todo!()
+ }
}
#[derive(Debug)]
diff --git a/crates/shirabe-external-packages/src/symfony/component/process/process.rs b/crates/shirabe-external-packages/src/symfony/component/process/process.rs
index d0cc249..227606b 100644
--- a/crates/shirabe-external-packages/src/symfony/component/process/process.rs
+++ b/crates/shirabe-external-packages/src/symfony/component/process/process.rs
@@ -109,4 +109,8 @@ impl Process {
pub fn set_working_directory(&mut self, _cwd: &str) -> &mut Self {
todo!()
}
+
+ pub fn set_tty(&mut self, _tty: bool) -> anyhow::Result<&mut Self> {
+ todo!()
+ }
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs b/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs
index f8b2e24..26af492 100644
--- a/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs
@@ -8,7 +8,7 @@ impl HelperSet {
todo!()
}
- pub fn get(&self, _name: &str) -> Option<PhpMixed> {
+ pub fn get(&self, _name: &str) -> PhpMixed {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/table.rs b/crates/shirabe-external-packages/src/symfony/console/helper/table.rs
index f5e7e0c..aeb01d8 100644
--- a/crates/shirabe-external-packages/src/symfony/console/helper/table.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/helper/table.rs
@@ -1,10 +1,15 @@
+use crate::symfony::component::console::output::output_interface::OutputInterface;
use shirabe_php_shim::PhpMixed;
#[derive(Debug)]
pub struct Table;
impl Table {
- pub fn new(_output: &dyn std::any::Any) -> Self {
+ pub fn new(_output: &dyn OutputInterface) -> Self {
+ todo!()
+ }
+
+ pub fn set_style(&mut self, _style: &str) -> &mut Self {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs b/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
index 65c2026..1f2a12d 100644
--- a/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
@@ -13,6 +13,16 @@ pub trait OutputInterface {
fn is_decorated(&self) -> bool;
fn set_formatter(&mut self, formatter: OutputFormatter);
fn get_formatter(&mut self) -> &mut OutputFormatter;
+
+ /// PHP: `$output instanceof ConsoleOutputInterface`. Default false; ConsoleOutput overrides.
+ fn is_console_output_interface(&self) -> bool {
+ false
+ }
+
+ /// PHP: only StreamOutput exposes `getStream()`. Default panics for outputs without one.
+ fn get_stream(&self) -> shirabe_php_shim::PhpResource {
+ todo!("get_stream not available on this OutputInterface implementation")
+ }
}
pub const VERBOSITY_QUIET: i64 = 16;
diff --git a/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs b/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
index 4269337..c3ab54e 100644
--- a/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
@@ -1,5 +1,5 @@
-use crate::symfony::console::input::input_interface::InputInterface;
-use crate::symfony::console::output::output_interface::OutputInterface;
+use crate::symfony::component::console::input::input_interface::InputInterface;
+use crate::symfony::component::console::output::output_interface::OutputInterface;
use shirabe_php_shim::PhpMixed;
#[derive(Debug)]