From 112df62a01e482f33b68e1dac190f70085fcec64 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 16 Aug 2026 10:00:50 +0900 Subject: refactor(php-shim): give parse_url a typed UrlComponents result parse_url now returns Option instead of a PhpMixed array, and the component-selecting overload with the PHP_URL_* constants is gone: callers read the field they want. Two call sites change behaviour as a result, both towards PHP: * CurlDownloader::handle_redirect tested scheme and host with is_null(), so an unparsable Location header (PhpMixed::Bool(false)) counted as an absolute URL. PHP's truthiness test sends it to the relative-path branch. * Url::get_origin appended a literal port 0, which PHP treats as falsy and leaves off. Co-Authored-By: Claude Opus 5 (1M context) --- crates/shirabe/src/command/repository_command.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'crates/shirabe/src/command/repository_command.rs') diff --git a/crates/shirabe/src/command/repository_command.rs b/crates/shirabe/src/command/repository_command.rs index ef75ffd0..4853d3d3 100644 --- a/crates/shirabe/src/command/repository_command.rs +++ b/crates/shirabe/src/command/repository_command.rs @@ -12,8 +12,8 @@ use crate::json::JsonFile; use indexmap::IndexMap; use shirabe_pcre::Preg; use shirabe_php_shim::{ - InvalidArgumentException, PHP_URL_HOST, PhpMixed, RuntimeException, impl_php_class, parse_url, - php_regex, strtolower, + InvalidArgumentException, PhpMixed, RuntimeException, impl_php_class, parse_url, php_regex, + strtolower, }; use shirabe_symfony_console::command::Command; use shirabe_symfony_console::input::InputInterface; @@ -64,9 +64,9 @@ impl RepositoryCommand { .get("url") .and_then(|v| v.as_string()) .map(|url| { - parse_url(url, PHP_URL_HOST) - .as_string() - .unwrap_or("") + parse_url(url) + .and_then(|parsed| parsed.host) + .unwrap_or_default() .ends_with("packagist.org") }) .unwrap_or(false); -- cgit v1.3.1-4-g156e