aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/archiver/phar_archiver.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-19 00:10:22 +0900
committernsfisis <nsfisis@gmail.com>2026-05-19 00:11:03 +0900
commitc839244d8d09f3036ebfee8eef7eb6b147e593ab (patch)
treefe48c94f2c2e62468beef5ff1a8f3cff6adeef4f /crates/shirabe/src/package/archiver/phar_archiver.rs
parent48839250146b217e2756ed3c0e624fd341b54d6c (diff)
downloadphp-shirabe-c839244d8d09f3036ebfee8eef7eb6b147e593ab.tar.gz
php-shirabe-c839244d8d09f3036ebfee8eef7eb6b147e593ab.tar.zst
php-shirabe-c839244d8d09f3036ebfee8eef7eb6b147e593ab.zip
fix(compile): fix various compile errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/archiver/phar_archiver.rs')
-rw-r--r--crates/shirabe/src/package/archiver/phar_archiver.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/crates/shirabe/src/package/archiver/phar_archiver.rs b/crates/shirabe/src/package/archiver/phar_archiver.rs
index 2e9d96e..7b5142b 100644
--- a/crates/shirabe/src/package/archiver/phar_archiver.rs
+++ b/crates/shirabe/src/package/archiver/phar_archiver.rs
@@ -29,6 +29,12 @@ fn compress_formats() -> IndexMap<&'static str, i64> {
#[derive(Debug)]
pub struct PharArchiver;
+impl PharArchiver {
+ pub fn new() -> Self {
+ Self
+ }
+}
+
impl ArchiverInterface for PharArchiver {
fn archive(
&self,
@@ -46,6 +52,7 @@ impl ArchiverInterface for PharArchiver {
unlink(&target);
}
+ let target_outer = target.clone();
let inner = (|| -> anyhow::Result<String> {
let pos = strrpos(&target, &format).unwrap_or(target.len());
let filename = target[..pos.saturating_sub(1)].to_string();
@@ -63,7 +70,10 @@ impl ArchiverInterface for PharArchiver {
*formats.get(format.as_str()).unwrap_or(&Phar::TAR),
);
let files = ArchivableFilesFinder::new(&sources, excludes, ignore_filters)?;
- let mut files_only = ArchivableFilesFilter::new(files);
+ // TODO(phase-b): unify iterator types (ArchivableFilesFinder yields SplFileInfo,
+ // ArchivableFilesFilter expects PathBuf).
+ let mut files_only =
+ ArchivableFilesFilter::new(Box::new(files.map(|f| f.get_pathname().into())));
phar.build_from_iterator(&mut files_only, &sources);
files_only.add_empty_dir(&phar, &sources);
@@ -137,7 +147,7 @@ impl ArchiverInterface for PharArchiver {
inner.map_err(|e| {
let message = format!(
"Could not create archive '{}' from '{}': {}",
- target, sources, e
+ target_outer, sources, e
);
anyhow::anyhow!(RuntimeException { message, code: 0 })
})