| Age | Commit message (Collapse) | Author |
|
shirabe-symfony-process crate
Move `Symfony\Component\Process` out of shirabe-external-packages and
into its own crate, so the path is `shirabe_symfony_process::Process`
instead of `shirabe_external_packages::symfony::process::Process`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
Ported exceptions were flat structs reached with `downcast_ref`, so
Composer's `catch (\RuntimeException $e)` only matched the exact leaf
type and `get_class($e)` had nothing to report. Each exception now
embeds an instance of the class it extends and travels inside an
`AnyThrowable`; `Catch::catch`/`catch_mut` walk that chain, and
`PhpClass::php_class_name` yields the PHP FQCN.
Dropping the `std::error::Error` impls from the exception types leaves
`AnyThrowable` as the only route into an `anyhow::Error`, so the walk
cannot be bypassed. A `no_exception_downcast` linter catches the
`downcast::<X>()` calls that would now silently answer `None`.
Three sites change behavior as a result: the `TransportException`
exit-code override reaches `MaxFileSizeExceededException`, the
`catch (\LogicException)` in findSimilar() reaches its subclasses, and
rendered exception titles carry the real class name rather than a
guess. `get_class_err()` is no longer a `todo!()`, which re-enables
FilesystemRepositoryTest::testCorruptedRepositoryFile.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
Since Process is php-native with no Rust-fidelity obligation (see
plugin-class-classification.md), this port only needs to cover what
Rust-ported Composer code actually calls. Made the pipes/process_utils
modules pub(crate) (nothing outside symfony/process used them) and
rebuilt with `--force-warn dead_code` (normally allowed workspace-wide)
to find genuinely unreachable methods: Process lost 17 methods, 5
constants, and a private clone helper; ExecutableFinder lost two unused
suffix setters; AbstractPipes lost handle_error, whose only caller (a
stream_select error-handler registration) was never wired up.
Removing several of those setters (set_pty, set_idle_timeout,
disable_output/enable_output, set_options) then left the fields they
used to write with no remaining writer, so they hold one constant value
on every reachable path: pty always false, idle_timeout always None,
output_disabled always false, options always {suppress_errors,
bypass_shell}. Audited by value (not just call-graph reachability) and
removed everything that depended on the now-constant value:
- pty: is_pty(), is_pty_supported(), the PTY descriptor branch in
UnixPipes::get_descriptors(), and the now-unconstructed
Descriptor::Pty variant in shirabe-php-shim (plus its proc_open
match arm).
- idle_timeout: get_idle_timeout() and check_timeout()'s idle branch;
ProcessTimedOutException collapses to the single reachable timeout
type (dropped timeout_type/TYPE_GENERAL/TYPE_IDLE/is_general_timeout/
is_idle_timeout/get_exceeded_timeout).
- output_disabled: is_output_disabled(), build_callback()'s disabled
variant, get_descriptors()'s output_disabled term, and the
always-false guard in read_pipes_for_output()/ProcessFailedException
(its output section is now unconditional).
- options: Drop::drop()'s create_new_console branch can never fire
(that key can no longer exist), so it always just stops the process.
- has_callback/last_output_time: left write-only once their only
readers (the branches above) were gone.
- have_read_support: constant true once output_disabled collapsed, so
removed from PipesInterface, UnixPipes (incl. its /dev/null
null-stream branch), WindowsPipes, and Process::wait()'s dead guard.
No behavior change: every removed item/branch had zero callers, or was
constant on every reachable call site.
|
|
|
|
Faithfully port every method, field and constant of Symfony's
Process.php into process.rs, replacing the reduced stub. Add the
supporting pipes module (PipesInterface/AbstractPipes/UnixPipes/
WindowsPipes), ProcessUtils and the missing process exceptions
(LogicException/InvalidArgumentException) with constructors.
Methods now return anyhow::Result where PHP throws, take the env
argument and a bool-returning callback, and borrow &mut for
status-updating accessors; all callers are updated accordingly.
Extend the php-shim with proc_open/proc_close (PHP-compatible
signatures), proc_get_status, proc_terminate, posix_kill, uniqid,
ftruncate, ftell_stream, fseek3, stream_get_contents3 and env
helpers.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Align the Symfony namespace mapping with the documented convention
(symfony::component::X -> symfony::X) and remove now-unused console
stub files. Update all import paths across the workspace.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|