diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-10 23:47:33 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-10 23:47:33 +0900 |
| commit | b65e338d4cf06afb8237512e49a51e354277196d (patch) | |
| tree | 5099c6bd950ff59acd5be15ff224b02d05563834 /scripts/plugin-class-classifier/src/BuiltinSignatures.php | |
| parent | 3f80f3c725245c769f05b6d3317f086e226fae50 (diff) | |
| download | php-shirabe-b65e338d4cf06afb8237512e49a51e354277196d.tar.gz php-shirabe-b65e338d4cf06afb8237512e49a51e354277196d.tar.zst php-shirabe-b65e338d4cf06afb8237512e49a51e354277196d.zip | |
feat(console): import scripts Command classes as application commands
`Application::do_run` registers a `composer.json` script whose value names a
`Symfony\Component\Console\Command\Command` subclass as a live command. The
class checks and `new $dummy($script)` need a real PHP runtime, so they run in
the worker: the command object lives there and this side keeps a metadata
mirror for `list`/`help`, forwarding a run to the worker-side console
application it is added to. The name and description fixups are applied to the
worker-side object, so both sides carry the same values.
Loading the Composer PHP runtime into the worker is gated on the Rust-side
`ClassLoader`s resolving the class to a file, keeping that load out of every
run whose scripts are plain shell commands.
The worker-side console application handoff now accepts commands registered
after it was published, since the scripts scan runs after plugin commands are
collected. Whether it was published is tracked per application: the handoff is
process-wide, so a second application must replace it rather than extend it.
`shirabe_php_shim::is_subclass_of` has no callers left.
Diffstat (limited to 'scripts/plugin-class-classifier/src/BuiltinSignatures.php')
0 files changed, 0 insertions, 0 deletions
