aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/archiver/archive_manager.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/package/archiver/archive_manager.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/package/archiver/archive_manager.rs')
-rw-r--r--crates/shirabe/src/package/archiver/archive_manager.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/crates/shirabe/src/package/archiver/archive_manager.rs b/crates/shirabe/src/package/archiver/archive_manager.rs
index e198a03..a4169ef 100644
--- a/crates/shirabe/src/package/archiver/archive_manager.rs
+++ b/crates/shirabe/src/package/archiver/archive_manager.rs
@@ -10,6 +10,7 @@ use shirabe_php_shim::{
use crate::downloader::DownloadManager;
use crate::json::JsonFile;
use crate::package::CompletePackageInterface;
+use crate::package::CompletePackageInterfaceHandle;
use crate::package::RootPackageInterface;
use crate::package::archiver::ArchiverInterface;
use crate::package::archiver::PharArchiver;
@@ -57,11 +58,11 @@ impl ArchiveManager {
pub fn get_package_filename_parts(
&self,
- package: &dyn CompletePackageInterface,
+ package: CompletePackageInterfaceHandle,
) -> anyhow::Result<IndexMap<String, String>> {
let base_name = match package.get_archive_name() {
Some(name) => name.to_string(),
- None => Preg::replace("#[^a-z0-9-_]#i", "-", package.get_name())?,
+ None => Preg::replace("#[^a-z0-9-_]#i", "-", &package.get_name())?,
};
let mut parts: IndexMap<String, String> = IndexMap::new();
@@ -89,7 +90,7 @@ impl ArchiveManager {
}
if let Some(source_reference) = package.get_source_reference() {
- let hash = shirabe_php_shim::hash("sha1", source_reference);
+ let hash = shirabe_php_shim::hash("sha1", &source_reference);
parts.insert("source_reference".to_string(), hash[..6].to_string());
}
@@ -108,7 +109,7 @@ impl ArchiveManager {
pub fn get_package_filename(
&self,
- package: &dyn CompletePackageInterface,
+ package: CompletePackageInterfaceHandle,
) -> anyhow::Result<String> {
let parts = self.get_package_filename_parts(package)?;
Ok(self.get_package_filename_from_parts(&parts))
@@ -116,7 +117,7 @@ impl ArchiveManager {
pub fn archive(
&mut self,
- package: &mut dyn CompletePackageInterface,
+ package: CompletePackageInterfaceHandle,
format: String,
target_dir: String,
file_name: Option<String>,
@@ -152,7 +153,7 @@ impl ArchiveManager {
let mut filesystem = Filesystem::new(None);
- let is_root = package.as_root_package_interface().is_some();
+ let is_root = package.as_rc().borrow().is_root();
let source_path: String;
if is_root {
@@ -169,7 +170,7 @@ impl ArchiveManager {
Some(Box::pin(async {
self.download_manager
.borrow()
- .download(package, &source_path, None)
+ .download(package.clone().into(), &source_path, None)
.await
.map(|_| ())
})),
@@ -179,7 +180,7 @@ impl ArchiveManager {
Some(Box::pin(async {
self.download_manager
.borrow()
- .install(package, &source_path)
+ .install(package.clone().into(), &source_path)
.await
.map(|_| ())
})),
@@ -219,7 +220,7 @@ impl ArchiveManager {
let supported_formats = self.get_supported_formats();
let package_name_parts = match file_name {
- None => self.get_package_filename_parts(package)?,
+ None => self.get_package_filename_parts(package.clone())?,
Some(f) => {
let mut parts = IndexMap::new();
parts.insert("base".to_string(), f);