aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/archiver
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-17 02:53:53 +0900
committernsfisis <nsfisis@gmail.com>2026-05-17 02:53:53 +0900
commita1c7e6908a26e10f6e1f23a51721664b5e2d838d (patch)
treec575c76f1b43359ed74913da4c6a2636643f1ba0 /crates/shirabe/src/package/archiver
parent7f606f36fef0c0467c3c0db3d0da33af486dae8a (diff)
downloadphp-shirabe-a1c7e6908a26e10f6e1f23a51721664b5e2d838d.tar.gz
php-shirabe-a1c7e6908a26e10f6e1f23a51721664b5e2d838d.tar.zst
php-shirabe-a1c7e6908a26e10f6e1f23a51721664b5e2d838d.zip
chore(style): cargo fmt
Diffstat (limited to 'crates/shirabe/src/package/archiver')
-rw-r--r--crates/shirabe/src/package/archiver/archivable_files_filter.rs2
-rw-r--r--crates/shirabe/src/package/archiver/archivable_files_finder.rs11
-rw-r--r--crates/shirabe/src/package/archiver/archive_manager.rs17
-rw-r--r--crates/shirabe/src/package/archiver/base_exclude_filter.rs5
-rw-r--r--crates/shirabe/src/package/archiver/git_exclude_filter.rs11
-rw-r--r--crates/shirabe/src/package/archiver/mod.rs9
-rw-r--r--crates/shirabe/src/package/archiver/phar_archiver.rs26
-rw-r--r--crates/shirabe/src/package/archiver/zip_archiver.rs35
8 files changed, 69 insertions, 47 deletions
diff --git a/crates/shirabe/src/package/archiver/archivable_files_filter.rs b/crates/shirabe/src/package/archiver/archivable_files_filter.rs
index a267cf1..f820e08 100644
--- a/crates/shirabe/src/package/archiver/archivable_files_filter.rs
+++ b/crates/shirabe/src/package/archiver/archivable_files_filter.rs
@@ -1,7 +1,7 @@
//! ref: composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php
-use std::path::PathBuf;
use shirabe_php_shim::PharData;
+use std::path::PathBuf;
pub struct ArchivableFilesFilter {
inner: Box<dyn Iterator<Item = PathBuf>>,
diff --git a/crates/shirabe/src/package/archiver/archivable_files_finder.rs b/crates/shirabe/src/package/archiver/archivable_files_finder.rs
index 7d1b94e..35ec36f 100644
--- a/crates/shirabe/src/package/archiver/archivable_files_finder.rs
+++ b/crates/shirabe/src/package/archiver/archivable_files_finder.rs
@@ -1,12 +1,12 @@
//! ref: composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php
-use shirabe_external_packages::composer::pcre::preg::Preg;
-use shirabe_external_packages::symfony::component::finder::finder::Finder;
-use shirabe_external_packages::symfony::component::finder::spl_file_info::SplFileInfo;
-use shirabe_php_shim::{preg_quote, realpath, RuntimeException};
use crate::package::archiver::composer_exclude_filter::ComposerExcludeFilter;
use crate::package::archiver::git_exclude_filter::GitExcludeFilter;
use crate::util::filesystem::Filesystem;
+use shirabe_external_packages::composer::pcre::preg::Preg;
+use shirabe_external_packages::symfony::component::finder::finder::Finder;
+use shirabe_external_packages::symfony::component::finder::spl_file_info::SplFileInfo;
+use shirabe_php_shim::{RuntimeException, preg_quote, realpath};
pub struct ArchivableFilesFinder {
pub(crate) finder: Finder,
@@ -30,7 +30,8 @@ impl ArchivableFilesFinder {
return Err(RuntimeException {
message: format!("Could not realpath() the source directory \"{}\"", sources),
code: 0,
- }.into());
+ }
+ .into());
}
let sources = fs.normalize_path(&sources_real_path.unwrap());
diff --git a/crates/shirabe/src/package/archiver/archive_manager.rs b/crates/shirabe/src/package/archiver/archive_manager.rs
index ed7c6f7..3f7bfe0 100644
--- a/crates/shirabe/src/package/archiver/archive_manager.rs
+++ b/crates/shirabe/src/package/archiver/archive_manager.rs
@@ -1,11 +1,11 @@
//! ref: composer/src/Composer/Package/Archiver/ArchiveManager.php
use indexmap::IndexMap;
+use shirabe_external_packages::composer::pcre::preg::Preg;
use shirabe_php_shim::{
- bin2hex, file_exists, random_bytes, realpath, sys_get_temp_dir, InvalidArgumentException,
- RuntimeException,
+ InvalidArgumentException, RuntimeException, bin2hex, file_exists, random_bytes, realpath,
+ sys_get_temp_dir,
};
-use shirabe_external_packages::composer::pcre::preg::Preg;
use crate::downloader::download_manager::DownloadManager;
use crate::json::json_file::JsonFile;
@@ -58,11 +58,7 @@ impl ArchiveManager {
) -> 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();
@@ -129,7 +125,10 @@ impl ArchiveManager {
let mut usable_archiver_idx: Option<usize> = None;
for (i, archiver) in self.archivers.iter().enumerate() {
- if archiver.supports(format.clone(), package.get_source_type().map(|s| s.to_string())) {
+ if archiver.supports(
+ format.clone(),
+ package.get_source_type().map(|s| s.to_string()),
+ ) {
usable_archiver_idx = Some(i);
break;
}
diff --git a/crates/shirabe/src/package/archiver/base_exclude_filter.rs b/crates/shirabe/src/package/archiver/base_exclude_filter.rs
index 7f737fe..f20af20 100644
--- a/crates/shirabe/src/package/archiver/base_exclude_filter.rs
+++ b/crates/shirabe/src/package/archiver/base_exclude_filter.rs
@@ -53,7 +53,10 @@ impl BaseExcludeFilter {
}
pub fn generate_patterns(&self, rules: Vec<String>) -> Vec<(String, bool, bool)> {
- rules.into_iter().map(|rule| self.generate_pattern(&rule)).collect()
+ rules
+ .into_iter()
+ .map(|rule| self.generate_pattern(&rule))
+ .collect()
}
pub fn generate_pattern(&self, rule: &str) -> (String, bool, bool) {
diff --git a/crates/shirabe/src/package/archiver/git_exclude_filter.rs b/crates/shirabe/src/package/archiver/git_exclude_filter.rs
index b3e43dc..8028c15 100644
--- a/crates/shirabe/src/package/archiver/git_exclude_filter.rs
+++ b/crates/shirabe/src/package/archiver/git_exclude_filter.rs
@@ -1,8 +1,8 @@
//! ref: composer/src/Composer/Package/Archiver/GitExcludeFilter.php
-use std::path::Path;
-use shirabe_external_packages::composer::pcre::preg::Preg;
use crate::package::archiver::base_exclude_filter::BaseExcludeFilter;
+use shirabe_external_packages::composer::pcre::preg::Preg;
+use std::path::Path;
pub struct GitExcludeFilter {
inner: BaseExcludeFilter,
@@ -20,10 +20,9 @@ impl GitExcludeFilter {
.lines()
.map(|l| l.to_string())
.collect();
- let patterns = filter.inner.parse_lines(
- lines,
- |line| GitExcludeFilter::parse_git_attributes_line_static(line),
- );
+ let patterns = filter.inner.parse_lines(lines, |line| {
+ GitExcludeFilter::parse_git_attributes_line_static(line)
+ });
filter.inner.exclude_patterns.extend(patterns);
}
diff --git a/crates/shirabe/src/package/archiver/mod.rs b/crates/shirabe/src/package/archiver/mod.rs
new file mode 100644
index 0000000..ecf86c8
--- /dev/null
+++ b/crates/shirabe/src/package/archiver/mod.rs
@@ -0,0 +1,9 @@
+pub mod archivable_files_filter;
+pub mod archivable_files_finder;
+pub mod archive_manager;
+pub mod archiver_interface;
+pub mod base_exclude_filter;
+pub mod composer_exclude_filter;
+pub mod git_exclude_filter;
+pub mod phar_archiver;
+pub mod zip_archiver;
diff --git a/crates/shirabe/src/package/archiver/phar_archiver.rs b/crates/shirabe/src/package/archiver/phar_archiver.rs
index 24cd738..2e9d96e 100644
--- a/crates/shirabe/src/package/archiver/phar_archiver.rs
+++ b/crates/shirabe/src/package/archiver/phar_archiver.rs
@@ -2,8 +2,8 @@
use indexmap::IndexMap;
use shirabe_php_shim::{
- bzcompress, file_exists, file_put_contents, function_exists, gzcompress, pack, str_repeat,
- strrpos, unlink, FilesystemIterator, Phar, PharData, PhpMixed, RuntimeException,
+ FilesystemIterator, Phar, PharData, PhpMixed, RuntimeException, bzcompress, file_exists,
+ file_put_contents, function_exists, gzcompress, pack, str_repeat, strrpos, unlink,
};
use crate::package::archiver::archivable_files_filter::ArchivableFilesFilter;
@@ -79,14 +79,14 @@ impl ArchiverInterface for PharArchiver {
let eocd = pack(
"VvvvvVVv",
&[
- PhpMixed::Int(0x06054b50), // End of central directory signature
- PhpMixed::Int(0), // Number of this disk
- PhpMixed::Int(0), // Disk where central directory starts
- PhpMixed::Int(0), // Number of central directory records on this disk
- PhpMixed::Int(0), // Total number of central directory records
- PhpMixed::Int(0), // Size of central directory (bytes)
- PhpMixed::Int(0), // Offset of start of central directory
- PhpMixed::Int(0), // Comment length
+ PhpMixed::Int(0x06054b50), // End of central directory signature
+ PhpMixed::Int(0), // Number of this disk
+ PhpMixed::Int(0), // Disk where central directory starts
+ PhpMixed::Int(0), // Number of central directory records on this disk
+ PhpMixed::Int(0), // Total number of central directory records
+ PhpMixed::Int(0), // Size of central directory (bytes)
+ PhpMixed::Int(0), // Offset of start of central directory
+ PhpMixed::Int(0), // Comment length
],
);
file_put_contents(&target, &eocd);
@@ -100,10 +100,12 @@ impl ArchiverInterface for PharArchiver {
.into());
}
if format == "tar.gz" && function_exists("gzcompress") {
- let data = gzcompress(&str_repeat("\0", 10240).into_bytes()).unwrap_or_default();
+ let data =
+ gzcompress(&str_repeat("\0", 10240).into_bytes()).unwrap_or_default();
file_put_contents(&target, &data);
} else if format == "tar.bz2" && function_exists("bzcompress") {
- let data = bzcompress(&str_repeat("\0", 10240).into_bytes()).unwrap_or_default();
+ let data =
+ bzcompress(&str_repeat("\0", 10240).into_bytes()).unwrap_or_default();
file_put_contents(&target, &data);
}
}
diff --git a/crates/shirabe/src/package/archiver/zip_archiver.rs b/crates/shirabe/src/package/archiver/zip_archiver.rs
index 104c544..ef5b40a 100644
--- a/crates/shirabe/src/package/archiver/zip_archiver.rs
+++ b/crates/shirabe/src/package/archiver/zip_archiver.rs
@@ -1,11 +1,13 @@
//! ref: composer/src/Composer/Package/Archiver/ZipArchiver.php
-use indexmap::IndexMap;
-use shirabe_php_shim::{class_exists, fileperms, method_exists, pack, realpath, PhpMixed, RuntimeException, ZipArchive};
use crate::package::archiver::archivable_files_finder::ArchivableFilesFinder;
use crate::package::archiver::archiver_interface::ArchiverInterface;
use crate::util::filesystem::Filesystem;
use crate::util::platform::Platform;
+use indexmap::IndexMap;
+use shirabe_php_shim::{
+ PhpMixed, RuntimeException, ZipArchive, class_exists, fileperms, method_exists, pack, realpath,
+};
#[derive(Debug)]
pub struct ZipArchiver;
@@ -60,22 +62,29 @@ impl ArchiverInterface for ZipArchiver {
// setExternalAttributesName() is only available with libzip 0.11.2 or above
if method_exists(&PhpMixed::Null, "setExternalAttributesName") {
let perms = fileperms(&filepath);
- zip.set_external_attributes_name(&relative_path, ZipArchive::OPSYS_UNIX, perms << 16);
+ zip.set_external_attributes_name(
+ &relative_path,
+ ZipArchive::OPSYS_UNIX,
+ perms << 16,
+ );
}
}
if zip.close() {
if !std::path::Path::new(&target).exists() {
// create minimal valid ZIP file (Empty Central Directory + End of Central Directory record)
- let eocd = pack("VvvvvVVv", &[
- PhpMixed::Int(0x06054b50), // End of central directory signature
- PhpMixed::Int(0), // Number of this disk
- PhpMixed::Int(0), // Disk where central directory starts
- PhpMixed::Int(0), // Number of central directory records on this disk
- PhpMixed::Int(0), // Total number of central directory records
- PhpMixed::Int(0), // Size of central directory (bytes)
- PhpMixed::Int(0), // Offset of start of central directory
- PhpMixed::Int(0), // Comment length
- ]);
+ let eocd = pack(
+ "VvvvvVVv",
+ &[
+ PhpMixed::Int(0x06054b50), // End of central directory signature
+ PhpMixed::Int(0), // Number of this disk
+ PhpMixed::Int(0), // Disk where central directory starts
+ PhpMixed::Int(0), // Number of central directory records on this disk
+ PhpMixed::Int(0), // Total number of central directory records
+ PhpMixed::Int(0), // Size of central directory (bytes)
+ PhpMixed::Int(0), // Offset of start of central directory
+ PhpMixed::Int(0), // Comment length
+ ],
+ );
std::fs::write(&target, &eocd)?;
}