aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/archiver
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-18 01:57:02 +0900
committernsfisis <nsfisis@gmail.com>2026-08-18 01:57:02 +0900
commit530d085d4f3e19f94ac3cf8f8ac3b17000214b2e (patch)
treeb4de2c2443e2bb2cfc692454ac284dc1d2313e59 /crates/shirabe/src/package/archiver
parent0caac63bacefb9a1f62848636d47fca07f592bba (diff)
downloadphp-shirabe-530d085d4f3e19f94ac3cf8f8ac3b17000214b2e.tar.gz
php-shirabe-530d085d4f3e19f94ac3cf8f8ac3b17000214b2e.tar.zst
php-shirabe-530d085d4f3e19f94ac3cf8f8ac3b17000214b2e.zip
refactor(pcre): inline Preg into its call sites and drop the crate
Preg had shed everything it owned: after the last few rounds its methods were one-line forwards to the shim's preg_*(), differing only in a default argument or a wrapper the caller unwrapped anyway. The 460 call sites now name the shim function, and shirabe-pcre is gone from the workspace along with its LICENSE entry. The forwards expand as they read: isMatch becomes preg_match2(.., 0).is_some() (is_none() where PHP negates it), isMatch3 and match3 drop the .is_some(), matchAll counts through preg_match_all2(..).occurrence_count(), and replace4/replace5 spell out the limit and count arguments preg_replace2 takes. Callbacks are the one place the shapes differ: preg_replace_callback carries an error out of the callback, so the fourteen infallible closures wrap their result in Ok() and expect() it back. Config::process() is the fifteenth, and it drops the `error` cell it captured to smuggle a failure past a closure that could only return a String. The `?` in the closure now carries it, which is what the PHP does -- a throw from the callback leaves preg_replace_callback at the failing match rather than running the remaining replacements and reporting the last error. The module doc that explained why composer/pcre's exceptions and *StrictGroups() variants have no counterpart moves to the shim's preg module, where the functions it describes live. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/archiver')
-rw-r--r--crates/shirabe/src/package/archiver/archivable_files_finder.rs5
-rw-r--r--crates/shirabe/src/package/archiver/archive_manager.rs9
-rw-r--r--crates/shirabe/src/package/archiver/base_exclude_filter.rs4
3 files changed, 8 insertions, 10 deletions
diff --git a/crates/shirabe/src/package/archiver/archivable_files_finder.rs b/crates/shirabe/src/package/archiver/archivable_files_finder.rs
index 8fba18cb..7a1797bf 100644
--- a/crates/shirabe/src/package/archiver/archivable_files_finder.rs
+++ b/crates/shirabe/src/package/archiver/archivable_files_finder.rs
@@ -4,8 +4,7 @@ use crate::package::archiver::BaseExcludeFilter;
use crate::package::archiver::ComposerExcludeFilter;
use crate::package::archiver::GitExcludeFilter;
use crate::util::Filesystem;
-use shirabe_pcre::Preg;
-use shirabe_php_shim::{RuntimeException, preg_quote, realpath};
+use shirabe_php_shim::{RuntimeException, preg_quote, preg_replace, realpath};
use shirabe_symfony_finder::Finder;
use std::path::{Path, PathBuf};
@@ -56,7 +55,7 @@ impl ArchivableFilesFinder {
return false;
}
- let relative_path = Preg::replace(
+ let relative_path = preg_replace(
format!("#^{}#", preg_quote(&sources_clone, Some('#'))),
"",
&fs.normalize_path(&realpath.to_string_lossy()),
diff --git a/crates/shirabe/src/package/archiver/archive_manager.rs b/crates/shirabe/src/package/archiver/archive_manager.rs
index a0216d88..4f9e2ddc 100644
--- a/crates/shirabe/src/package/archiver/archive_manager.rs
+++ b/crates/shirabe/src/package/archiver/archive_manager.rs
@@ -10,10 +10,9 @@ use crate::util::Filesystem;
use crate::util::SyncHelper;
use crate::util::r#loop::Loop;
use indexmap::IndexMap;
-use shirabe_pcre::Preg;
use shirabe_php_shim::{
- InvalidArgumentException, RuntimeException, bin2hex, file_exists, php_regex, random_bytes,
- realpath, sys_get_temp_dir,
+ InvalidArgumentException, RuntimeException, bin2hex, file_exists, php_regex, preg_match2,
+ preg_replace, random_bytes, realpath, sys_get_temp_dir,
};
pub struct ArchiveManager {
@@ -58,7 +57,7 @@ impl ArchiveManager {
) -> anyhow::Result<IndexMap<String, String>> {
let base_name = match package.get_archive_name() {
Some(name) => name,
- None => Preg::replace(php_regex!("#[^a-z0-9-_]#i"), "-", &package.get_name()),
+ None => preg_replace(php_regex!("#[^a-z0-9-_]#i"), "-", &package.get_name()),
};
let mut parts: IndexMap<String, String> = IndexMap::new();
@@ -66,7 +65,7 @@ impl ArchiveManager {
let dist_reference = package.get_dist_reference();
if let Some(ref dist_ref) = dist_reference {
- if Preg::is_match(php_regex!("{^[a-f0-9]{40}$}"), dist_ref) {
+ if preg_match2(php_regex!("{^[a-f0-9]{40}$}"), dist_ref, 0).is_some() {
parts.insert("dist_reference".to_string(), dist_ref.to_string());
if let Some(dist_type) = package.get_dist_type() {
parts.insert("dist_type".to_string(), dist_type);
diff --git a/crates/shirabe/src/package/archiver/base_exclude_filter.rs b/crates/shirabe/src/package/archiver/base_exclude_filter.rs
index e5487038..16a189a8 100644
--- a/crates/shirabe/src/package/archiver/base_exclude_filter.rs
+++ b/crates/shirabe/src/package/archiver/base_exclude_filter.rs
@@ -1,6 +1,6 @@
//! ref: composer/src/Composer/Package/Archiver/BaseExcludeFilter.php
-use shirabe_pcre::Preg;
+use shirabe_php_shim::preg_match2;
use shirabe_symfony_finder::Glob;
#[derive(Debug)]
@@ -86,7 +86,7 @@ pub trait BaseExcludeFilter {
relative_path
};
- if Preg::is_match(pattern, path) {
+ if preg_match2(pattern, path, 0).is_some() {
exclude = !negate;
}
}