aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/lib.rs
AgeCommit message (Collapse)Author
2026-07-20fix(diagnose-command): stop holding a Config borrow across http callsnsfisis
execute() held &config.borrow() across check_http/check_composer_repo/ check_composer_audit, which reach HttpDownloader -> CurlDownloader:: download; that method does self.config.borrow_mut() on the same Config RefCell, panicking with "RefCell already borrowed" once the phpinfo panic that previously masked this was fixed. Switch those three helpers to take the Rc<RefCell<Config>> handle (matching check_version's existing pattern) and borrow only where a field is actually read, so no borrow spans the downstream network call. Un-ignore the now-passing run_diagnose smoke test and test_cmd_fail; test_cmd_success stays ignored, now for two separate reasons: it needs real network access (as the PHP original does), and shirabe_php_shim::OPENSSL_VERSION_NUMBER is a hardcoded stub (0) that always trips check_platform's TLSv1.1/1.2 support check regardless of the real linked OpenSSL, forcing a non-zero exit code.
2026-07-20feat(php-rpc): implement phpinfo() capture over RPCnsfisis
DiagnoseCommand::check_platform needed phpinfo() output but shirabe-php-shim's ob_start()/phpinfo()/ob_get_clean() are unmodeled todo!()s. Add a phpinfo dispatch entry to the PHP worker (capturing output the same way extension_info already does) and a get_phpinfo() wrapper, then switch check_platform to call it directly. This unblocks the phpinfo-related panic in diagnose; the ignored tests now hit a separate RefCell double-borrow bug in check_http, so their ignore reasons are updated to point at that instead.
2026-07-20test(cli-tests): detail run_diagnose ignore reasonnsfisis
Measured the actual panic site: DiagnoseCommand::check_platform reaches the todo!() ob_start()/ob_get_clean() shims while capturing phpinfo(), the same root cause already recorded in tests/command/diagnose_command_test.rs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20fix(require-command): drop input borrows before determine_requirementsnsfisis
The Ref temporaries created by input.borrow() inside the argument expressions of the determine_requirements call lived until the end of the whole call statement, so ConsoleIO::ask_question's borrow_mut() on the same shared input RefCell panicked with "RefCell already borrowed" when the command prompted for packages. Hoist the argument computations into locals so no borrow is held across the call, and un-ignore the run_require CLI test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-27refactor(main): minor refactoringnsfisis
2026-06-26test(cli): force --no-interaction so init does not hang under a TTYnsfisis
The cli_tests suite runs the real CLI; under a TTY Composer's do_run logic keeps interaction enabled, so `init` blocks on stdin. Holding the #[serial] mutex while blocked made later tests (e.g. audit) appear to time out. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26test(cli): un-ignore archive/browse/clear-cache/init smoke testsnsfisis
These no-longer-panic after the table/command chokepoint fixes; diagnose and require still panic and stay ignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22test(cli): serialize cli_tests via serial_testnsfisis
Replace the hand-rolled `SERIAL` mutex guarding process-global env access with serial_test's `#[serial]` attribute on each test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22refactor(console): introduce ApplicationHandle shared-ownership newtypensfisis
Collapse the dual Application API (static methods taking `&Rc<RefCell<Application>>` plus `&mut self` bridges via `shared()`) into a single handle type `ApplicationHandle(Rc<RefCell<Application>>)`, mirroring the Composer handle pattern. Methods that invoke command callbacks (add, run, do_run, base_run, base_do_run, do_run_command, add_commands, init) move to `impl ApplicationHandle` with short-scoped borrows; data-only methods and `impl BaseApplication` stay on `Application`. `shared()` now returns the handle, and `new_shared`/`init_shared` fold into `ApplicationHandle::new`/`init`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21test: add empty test filesnsfisis
2026-06-19test(command): add basic smoke testsnsfisis
2026-06-11chore(compiler): drop compiler.rsnsfisis
The Compiler.php is PHP-tooling only (bin/compile) with no Rust equivalent, so it is not ported. Remove the compiler module along with the symbols used solely by it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-22refactor(composer): unify Composer/PartialComposer via Rc handlesnsfisis
Model PHP's `Composer extends PartialComposer` as a PartialOrFullComposer enum and merge partial_composer.rs into composer.rs. Introduce ComposerHandle / PartialComposerHandle (plus their Weak variants) so the graph can be shared, and build it at once with Rc::new_cyclic in the factory to resolve the back-reference cycles. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17chore(style): cargo fmtnsfisis