aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/filesystem_repository.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-27 00:49:33 +0900
committernsfisis <nsfisis@gmail.com>2026-05-27 00:54:09 +0900
commitcc5d73c05a0abca2eebcc8a6afa0b1543ee49850 (patch)
tree091a0d01232d927f13f3ab22700701804980f231 /crates/shirabe/src/repository/filesystem_repository.rs
parentc5850d62beabef0a6bcc4cf6a179589c0ba8f405 (diff)
downloadphp-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.gz
php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.zst
php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.zip
refactor(package): pass package handles by value throughout
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/repository/filesystem_repository.rs')
-rw-r--r--crates/shirabe/src/repository/filesystem_repository.rs36
1 files changed, 17 insertions, 19 deletions
diff --git a/crates/shirabe/src/repository/filesystem_repository.rs b/crates/shirabe/src/repository/filesystem_repository.rs
index c8ffb7c..8232ecf 100644
--- a/crates/shirabe/src/repository/filesystem_repository.rs
+++ b/crates/shirabe/src/repository/filesystem_repository.rs
@@ -16,9 +16,7 @@ use shirabe_php_shim::{
use crate::installed_versions::InstalledVersions;
use crate::installer::InstallationManager;
use crate::json::JsonFile;
-use crate::package::PackageInterface;
use crate::package::PackageInterfaceHandle;
-use crate::package::RootPackageInterface;
use crate::package::RootPackageInterfaceHandle;
use crate::package::dumper::ArrayDumper;
use crate::package::loader::ArrayLoader;
@@ -219,9 +217,8 @@ impl FilesystemRepository {
let mut install_paths: IndexMap<String, Option<String>> = IndexMap::new();
for package in self.inner.get_canonical_packages() {
- let mut pkg_array = dumper.dump(package.as_rc().borrow().as_package_interface());
- let path = installation_manager
- .get_install_path(package.as_rc().borrow().as_package_interface());
+ let mut pkg_array = dumper.dump(package.clone());
+ let path = installation_manager.get_install_path(package.clone());
let mut install_path: Option<String> = None;
if let Some(path_str) = &path {
if !path_str.is_empty() {
@@ -508,11 +505,7 @@ impl FilesystemRepository {
"root".to_string(),
PhpMixed::Array(
self.dump_root_package(
- current_root
- .as_rc()
- .borrow()
- .as_root_package_interface()
- .expect("current_root is a RootPackageInterface"),
+ current_root.clone(),
install_paths,
dev_mode,
repo_dir,
@@ -532,7 +525,7 @@ impl FilesystemRepository {
}
let dumped = self.dump_installed_package(
- package.as_rc().borrow().as_package_interface(),
+ package.clone(),
install_paths,
repo_dir,
&dev_packages,
@@ -633,7 +626,7 @@ impl FilesystemRepository {
/// @return array{pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev_requirement: bool}
fn dump_installed_package(
&self,
- package: &dyn PackageInterface,
+ package: PackageInterfaceHandle,
install_paths: &IndexMap<String, Option<String>>,
repo_dir: &str,
dev_packages: &PhpMixed,
@@ -648,8 +641,8 @@ impl FilesystemRepository {
}
if reference.is_none() {
// PHP: ($package->getSourceReference() ?: $package->getDistReference()) ?: null;
- let source = package.get_source_reference().unwrap_or("");
- let dist = package.get_dist_reference().unwrap_or("");
+ let source = package.get_source_reference().unwrap_or_default();
+ let dist = package.get_dist_reference().unwrap_or_default();
let combined = if !source.is_empty() {
source.to_string()
} else {
@@ -662,7 +655,7 @@ impl FilesystemRepository {
};
}
- let install_path = if package.as_root_package_interface().is_some() {
+ let install_path = if package.as_root().is_some() {
let to = self.filesystem.borrow_mut().normalize_path(
&realpath(&Platform::get_cwd(false).unwrap_or_default()).unwrap_or_default(),
);
@@ -672,7 +665,7 @@ impl FilesystemRepository {
.find_shortest_path(repo_dir, &to, true, false),
)
} else {
- install_paths.get(package.get_name()).cloned().flatten()
+ install_paths.get(&package.get_name()).cloned().flatten()
};
let mut data: IndexMap<String, PhpMixed> = IndexMap::new();
@@ -708,7 +701,7 @@ impl FilesystemRepository {
PhpMixed::Bool(
dev_packages
.as_array()
- .map(|m| m.contains_key(package.get_name()))
+ .map(|m| m.contains_key(&package.get_name()))
.unwrap_or(false),
),
);
@@ -721,13 +714,18 @@ impl FilesystemRepository {
/// @return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
fn dump_root_package(
&self,
- package: &dyn RootPackageInterface,
+ package: RootPackageInterfaceHandle,
install_paths: &IndexMap<String, Option<String>>,
dev_mode: bool,
repo_dir: &str,
dev_packages: &PhpMixed,
) -> IndexMap<String, PhpMixed> {
- let data = self.dump_installed_package(package, install_paths, repo_dir, dev_packages);
+ let data = self.dump_installed_package(
+ package.clone().into(),
+ install_paths,
+ repo_dir,
+ dev_packages,
+ );
let mut result: IndexMap<String, PhpMixed> = IndexMap::new();
result.insert(