diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-07-02 01:10:35 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-07-02 01:10:35 +0900 |
| commit | dda045eb663524b40e277047e3cea301738e5c26 (patch) | |
| tree | fab4c1a489c2b2f8010a34a79d3119bb0f1ce9b9 /crates/shirabe/src/repository | |
| parent | 1e849939b9f92fc04c2343cc5770d1f55ab71f66 (diff) | |
| download | php-shirabe-dda045eb663524b40e277047e3cea301738e5c26.tar.gz php-shirabe-dda045eb663524b40e277047e3cea301738e5c26.tar.zst php-shirabe-dda045eb663524b40e277047e3cea301738e5c26.zip | |
fix(platform-repository): wire ensure_initialized into RepositoryInterface
PlatformRepository::initialize() (php-version/extension detection) was
never invoked: the RepositoryInterface impl delegated straight to the
inner ArrayRepository without the ensure_initialized lazy-init guard
that sibling repositories (FilesystemRepository, PathRepository) use.
As a result pool.what_provides("php") was always empty, and any
package requiring php failed platform resolution. Also fixes the
trait search() bypassing PlatformRepository's own SEARCH_VENDOR
override.
Diffstat (limited to 'crates/shirabe/src/repository')
| -rw-r--r-- | crates/shirabe/src/repository/platform_repository.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/crates/shirabe/src/repository/platform_repository.rs b/crates/shirabe/src/repository/platform_repository.rs index 0fa5638..9dffe66 100644 --- a/crates/shirabe/src/repository/platform_repository.rs +++ b/crates/shirabe/src/repository/platform_repository.rs @@ -122,6 +122,13 @@ impl PlatformRepository { &self.disabled_packages } + fn ensure_initialized(&mut self) -> anyhow::Result<()> { + if !self.inner.is_initialized() { + self.initialize()?; + } + Ok(()) + } + pub(crate) fn initialize(&mut self) -> anyhow::Result<()> { self.inner.initialize(); @@ -1804,6 +1811,7 @@ impl PlatformRepository { return Ok(Vec::new()); } + self.ensure_initialized()?; self.inner.search(query, mode, r#type) } @@ -1860,6 +1868,7 @@ impl crate::repository::RepositoryInterface for PlatformRepository { name: &str, constraint: crate::repository::FindPackageConstraint, ) -> anyhow::Result<Option<crate::package::BasePackageHandle>> { + self.ensure_initialized()?; self.inner.find_package(name, constraint) } @@ -1868,10 +1877,12 @@ impl crate::repository::RepositoryInterface for PlatformRepository { name: &str, constraint: Option<crate::repository::FindPackageConstraint>, ) -> anyhow::Result<Vec<crate::package::BasePackageHandle>> { + self.ensure_initialized()?; self.inner.find_packages(name, constraint) } fn get_packages(&mut self) -> anyhow::Result<Vec<crate::package::BasePackageHandle>> { + self.ensure_initialized()?; self.inner.get_packages() } @@ -1882,6 +1893,7 @@ impl crate::repository::RepositoryInterface for PlatformRepository { stability_flags: IndexMap<String, i64>, already_loaded: IndexMap<String, IndexMap<String, crate::package::PackageInterfaceHandle>>, ) -> anyhow::Result<crate::repository::LoadPackagesResult> { + self.ensure_initialized()?; self.inner.load_packages( package_name_map, acceptable_stabilities, @@ -1896,13 +1908,14 @@ impl crate::repository::RepositoryInterface for PlatformRepository { mode: i64, r#type: Option<String>, ) -> anyhow::Result<Vec<crate::repository::SearchResult>> { - self.inner.search(query, mode, r#type) + PlatformRepository::search(self, query, mode, r#type) } fn get_providers( &mut self, package_name: String, ) -> anyhow::Result<IndexMap<String, crate::repository::ProviderInfo>> { + self.ensure_initialized()?; self.inner.get_providers(package_name) } |
