diff options
Diffstat (limited to 'crates/shirabe/src/package')
12 files changed, 97 insertions, 56 deletions
diff --git a/crates/shirabe/src/package/archiver/archivable_files_finder.rs b/crates/shirabe/src/package/archiver/archivable_files_finder.rs index 67f2fdaa..ad2b41ab 100644 --- a/crates/shirabe/src/package/archiver/archivable_files_finder.rs +++ b/crates/shirabe/src/package/archiver/archivable_files_finder.rs @@ -57,7 +57,7 @@ impl ArchivableFilesFinder { } let relative_path = Preg::replace( - &format!("#^{}#", preg_quote(&sources_clone, Some('#'))), + 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 eaeab9ce..52132be9 100644 --- a/crates/shirabe/src/package/archiver/archive_manager.rs +++ b/crates/shirabe/src/package/archiver/archive_manager.rs @@ -12,8 +12,8 @@ use crate::util::r#loop::Loop; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; use shirabe_php_shim::{ - InvalidArgumentException, RuntimeException, bin2hex, file_exists, random_bytes, realpath, - sys_get_temp_dir, + InvalidArgumentException, RuntimeException, bin2hex, file_exists, php_regex, random_bytes, + realpath, sys_get_temp_dir, }; pub struct ArchiveManager { @@ -58,7 +58,7 @@ impl ArchiveManager { ) -> 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(php_regex!("#[^a-z0-9-_]#i"), "-", &package.get_name()), }; let mut parts: IndexMap<String, String> = IndexMap::new(); @@ -66,7 +66,7 @@ impl ArchiveManager { let dist_reference = package.get_dist_reference(); if let Some(ref dist_ref) = dist_reference { - if Preg::is_match("{^[a-f0-9]{40}$}", dist_ref) { + if Preg::is_match(php_regex!("{^[a-f0-9]{40}$}"), dist_ref) { 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.to_string()); diff --git a/crates/shirabe/src/package/archiver/git_exclude_filter.rs b/crates/shirabe/src/package/archiver/git_exclude_filter.rs index 8620bddc..85842411 100644 --- a/crates/shirabe/src/package/archiver/git_exclude_filter.rs +++ b/crates/shirabe/src/package/archiver/git_exclude_filter.rs @@ -3,6 +3,7 @@ use crate::package::archiver::BaseExcludeFilter; use crate::package::archiver::BaseExcludeFilterBase; use shirabe_external_packages::composer::pcre::Preg; +use shirabe_php_shim::php_regex; use std::path::Path; pub struct GitExcludeFilter { @@ -35,7 +36,7 @@ impl GitExcludeFilter { } fn parse_git_attributes_line_static(line: &str) -> Option<(String, bool, bool)> { - let parts = Preg::split(r"#\s+#", line); + let parts = Preg::split(php_regex!(r"#\s+#"), line); if parts.len() == 2 && parts[1] == "export-ignore" { return Some(BaseExcludeFilterBase::generate_pattern(&parts[0])); diff --git a/crates/shirabe/src/package/loader/array_loader.rs b/crates/shirabe/src/package/loader/array_loader.rs index b85fbe61..07937c31 100644 --- a/crates/shirabe/src/package/loader/array_loader.rs +++ b/crates/shirabe/src/package/loader/array_loader.rs @@ -20,7 +20,7 @@ use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; use shirabe_php_shim::{ E_USER_DEPRECATED, PhpMixed, UnexpectedValueException, is_scalar, is_string, json_encode, - ltrim, stripos, strpos, strtolower, strval, substr, trigger_error, trim, + ltrim, php_regex, stripos, strpos, strtolower, strval, substr, trigger_error, trim, }; #[derive(Debug)] @@ -504,7 +504,7 @@ impl ArrayLoader { && !shirabe_php_shim::empty(time_value) { let time_str = time_value.as_string().unwrap_or(""); - let time = if Preg::is_match(r"/^\d++$/D", time_str) { + let time = if Preg::is_match(php_regex!(r"/^\d++$/D"), time_str) { format!("@{}", time_str) } else { time_str.to_string() @@ -674,7 +674,7 @@ impl ArrayLoader { if let Some(alias_normalized) = alias_normalized && !alias_normalized.is_empty() { - let pretty_alias = Preg::replace(r"{(\.9{7})+}", ".x", &alias_normalized); + let pretty_alias = Preg::replace(php_regex!(r"{(\.9{7})+}"), ".x", &alias_normalized); return Ok(match package { CompleteOrRootPackage::Root(root) => RootAliasPackageHandle::new( @@ -938,7 +938,7 @@ impl ArrayLoader { && default_branch_is_true && self .version_parser - .parse_numeric_alias_prefix(&Preg::replace(r"{^v}", "", &version_str)) + .parse_numeric_alias_prefix(&Preg::replace(php_regex!(r"{^v}"), "", &version_str)) .is_none() { return Ok(Some(VersionParser::DEFAULT_BRANCH_ALIAS.to_string())); diff --git a/crates/shirabe/src/package/loader/root_package_loader.rs b/crates/shirabe/src/package/loader/root_package_loader.rs index 83cda30b..b3ed8c41 100644 --- a/crates/shirabe/src/package/loader/root_package_loader.rs +++ b/crates/shirabe/src/package/loader/root_package_loader.rs @@ -16,7 +16,9 @@ use crate::util::Platform; use crate::util::ProcessExecutor; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; -use shirabe_php_shim::{PhpMixed, RuntimeException, UnexpectedValueException, strtolower}; +use shirabe_php_shim::{ + PhpMixed, RuntimeException, UnexpectedValueException, php_regex, strtolower, +}; #[derive(Debug)] pub struct RootPackageLoader { @@ -261,7 +263,7 @@ impl RootPackageLoader { for (req_name, req_version) in requires { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); if Preg::is_match3( - r"{(?:^|\| *|, *)([^,\s#|]+)(?:#[^ ]+)? +as +([^,\s|]+)(?:$| *\|| *,)}", + php_regex!(r"{(?:^|\| *|, *)([^,\s#|]+)(?:#[^ ]+)? +as +([^,\s|]+)(?:$| *\|| *,)}"), req_version, Some(&mut m), ) { @@ -315,7 +317,7 @@ impl RootPackageLoader { for (req_name, req_version) in requires { let mut constraints: Vec<String> = vec![]; - let or_split = Preg::split(r"{\s*\|\|?\s*}", req_version.trim()); + let or_split = Preg::split(php_regex!(r"{\s*\|\|?\s*}"), req_version.trim()); for or_constraint in &or_split { let and_split = shirabe_semver::split_and_constraints(or_constraint); for and_constraint in and_split { @@ -348,8 +350,9 @@ impl RootPackageLoader { } for constraint in &constraints { - let req_version_stripped = Preg::replace(r"{^([^,\s@]+) as .+$}", "$1", constraint); - if Preg::is_match(r"{^[^,\s@]+$}", &req_version_stripped) { + let req_version_stripped = + Preg::replace(php_regex!(r"{^([^,\s@]+) as .+$}"), "$1", constraint); + if Preg::is_match(php_regex!(r"{^[^,\s@]+$}"), &req_version_stripped) { let stability_name = VersionParser::parse_stability(&req_version_stripped); if stability_name != "stable" { let name = strtolower(req_name); @@ -373,10 +376,13 @@ impl RootPackageLoader { mut references: IndexMap<String, String>, ) -> IndexMap<String, String> { for (req_name, req_version) in requires { - let req_version = Preg::replace(r"{^([^,\s@]+) as .+$}", "$1", req_version); + let req_version = Preg::replace(php_regex!(r"{^([^,\s@]+) as .+$}"), "$1", req_version); let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); - if Preg::is_match3(r"{^[^,\s@]+?#([a-f0-9]+)$}", &req_version, Some(&mut m)) - && VersionParser::parse_stability(&req_version) == "dev" + if Preg::is_match3( + php_regex!(r"{^[^,\s@]+?#([a-f0-9]+)$}"), + &req_version, + Some(&mut m), + ) && VersionParser::parse_stability(&req_version) == "dev" { let name = strtolower(req_name); references.insert( diff --git a/crates/shirabe/src/package/loader/validating_array_loader.rs b/crates/shirabe/src/package/loader/validating_array_loader.rs index 4d7965f8..28ae7d9b 100644 --- a/crates/shirabe/src/package/loader/validating_array_loader.rs +++ b/crates/shirabe/src/package/loader/validating_array_loader.rs @@ -11,8 +11,8 @@ use shirabe_external_packages::composer::pcre::Preg; use shirabe_php_shim::{ E_USER_DEPRECATED, PHP_EOL, PhpMixed, array_intersect_key, array_values, filter_var_email, get_debug_type, is_array, is_bool, is_int, is_numeric, is_scalar, is_string, json_encode, - parse_url_all, php_to_string, str_replace, strcasecmp, strtolower, strtotime, substr, - trigger_error, trim, var_export, + parse_url_all, php_regex, php_to_string, str_replace, strcasecmp, strtolower, strtotime, + substr, trigger_error, trim, var_export, }; use shirabe_semver::Intervals; use shirabe_semver::constraint::AnyConstraint; @@ -910,7 +910,7 @@ impl LoaderInterface for ValidatingArrayLoader { self.warnings .borrow_mut() .push(format!("{}.{}", link_type, err)); - } else if !Preg::is_match("{^[A-Za-z0-9_./-]+$}", &package) { + } else if !Preg::is_match(php_regex!("{^[A-Za-z0-9_./-]+$}"), &package) { self.errors.borrow_mut().push(format!( "{}.{} : invalid key, package names must be strings containing only [A-Za-z0-9_./-]", link_type, package @@ -1173,7 +1173,7 @@ impl LoaderInterface for ValidatingArrayLoader { } if let Some(ref_val) = section.get("reference").filter(|_| isset("reference")) { let ref_str = php_to_string(ref_val); - if Preg::is_match("{^\\s*-}", &ref_str) { + if Preg::is_match(php_regex!("{^\\s*-}"), &ref_str) { self.errors.borrow_mut().push(format!( "{}.reference : must not start with a \"-\", \"{}\" given", src_type, ref_str @@ -1182,7 +1182,7 @@ impl LoaderInterface for ValidatingArrayLoader { } if let Some(url_val) = section.get("url").filter(|_| isset("url")) { let url_str = php_to_string(url_val); - if Preg::is_match("{^\\s*-}", &url_str) { + if Preg::is_match(php_regex!("{^\\s*-}"), &url_str) { self.errors.borrow_mut().push(format!( "{}.url : must not start with a \"-\", \"{}\" given", src_type, url_str @@ -1336,7 +1336,9 @@ impl ValidatingArrayLoader { } if !Preg::is_match( - "{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD", + php_regex!( + "{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD" + ), name, ) { return Some(format!( @@ -1359,14 +1361,14 @@ impl ValidatingArrayLoader { )); } - if Preg::is_match("{\\.json$}", name) { + if Preg::is_match(php_regex!("{\\.json$}"), name) { return Some(format!( "{} is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.", name )); } - if Preg::is_match("{[A-Z]}", name) { + if Preg::is_match(php_regex!("{[A-Z]}"), name) { if is_link { return Some(format!( "{} is invalid, it should not contain uppercase characters. Please use {} instead.", @@ -1376,7 +1378,7 @@ impl ValidatingArrayLoader { } let suggest_name = Preg::replace( - "{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}", + php_regex!("{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}"), "\\1\\3-\\2\\4", name, ); @@ -1400,7 +1402,7 @@ impl ValidatingArrayLoader { .as_string() .unwrap_or("") .to_string(); - if !Preg::is_match(&format!("{{^{}$}}u", regex), &value) { + if !Preg::is_match(format!("{{^{}$}}u", regex), &value) { let message = format!( "{} : invalid value ({}), must match {}", property, value, regex @@ -1513,7 +1515,7 @@ impl ValidatingArrayLoader { if let Some(regex_str) = regex { let value_str = php_to_string(&value); - if !Preg::is_match(&format!("{{^{}$}}u", regex_str), &value_str) { + if !Preg::is_match(format!("{{^{}$}}u", regex_str), &value_str) { self.warnings.borrow_mut().push(format!( "{}.{} : invalid value ({}), must match {}", property, key, value_str, regex_str diff --git a/crates/shirabe/src/package/locker.rs b/crates/shirabe/src/package/locker.rs index 94f46254..f7542d1f 100644 --- a/crates/shirabe/src/package/locker.rs +++ b/crates/shirabe/src/package/locker.rs @@ -29,7 +29,7 @@ use shirabe_external_packages::seld::json_lint::ParsingException; use shirabe_php_shim::{ DATE_RFC3339, LogicException, PhpMixed, RuntimeException, array_intersect, array_keys, array_map, array_merge, file_get_contents, filemtime, function_exists, hash, in_array, is_int, - ksort, realpath, strcmp, strtolower, touch2, trim, usort, + ksort, php_regex, realpath, strcmp, strtolower, touch2, trim, usort, }; /// Reads/writes project lockfile (composer.lock). @@ -849,7 +849,7 @@ impl Locker { ), None, ); - if Preg::is_match(r"{^\s*\d+\s*$}", &output_str) { + if Preg::is_match(php_regex!(r"{^\s*\d+\s*$}"), &output_str) { let ts = trim(&output_str, None).parse::<i64>().unwrap_or(0); datetime = chrono::DateTime::from_timestamp(ts, 0); } @@ -871,7 +871,7 @@ impl Locker { )? { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); if Preg::is_match3( - r"{^\s*(\d+)\s*}", + php_regex!(r"{^\s*(\d+)\s*}"), output.as_string().unwrap_or(""), Some(&mut m), ) { diff --git a/crates/shirabe/src/package/package.rs b/crates/shirabe/src/package/package.rs index ce22b755..e0bee0e6 100644 --- a/crates/shirabe/src/package/package.rs +++ b/crates/shirabe/src/package/package.rs @@ -11,7 +11,9 @@ use crate::util::ComposerMirror; use chrono::{DateTime, Utc}; use indexmap::{IndexMap, IndexSet}; use shirabe_external_packages::composer::pcre::Preg; -use shirabe_php_shim::{E_USER_DEPRECATED, LogicException, PhpMixed, strpos, trigger_error}; +use shirabe_php_shim::{ + E_USER_DEPRECATED, LogicException, PhpMixed, php_regex, strpos, trigger_error, +}; /// Mirror entry, e.g. `['url' => 'https://...', 'preferred' => true]`. #[derive(Debug, Clone)] @@ -138,7 +140,7 @@ impl Package { let target_dir = self.target_dir.as_ref()?; let replaced = Preg::replace( - "{ (?:^|[\\\\/]+) \\.\\.? (?:[\\\\/]+|$) (?:\\.\\.? (?:[\\\\/]+|$) )*}x", + php_regex!("{ (?:^|[\\\\/]+) \\.\\.? (?:[\\\\/]+|$) (?:\\.\\.? (?:[\\\\/]+|$) )*}x"), "/", target_dir, ); @@ -415,13 +417,15 @@ impl Package { // TODO generalize this a bit for self-managed/on-prem versions? Some kind of replace token in dist urls which allow this? if self.get_dist_url().is_some() && Preg::is_match( - "{^https?://(?:(?:www\\.)?bitbucket\\.org|(api\\.)?github\\.com|(?:www\\.)?gitlab\\.com)/}i", + php_regex!( + "{^https?://(?:(?:www\\.)?bitbucket\\.org|(api\\.)?github\\.com|(?:www\\.)?gitlab\\.com)/}i" + ), &self.get_dist_url().unwrap_or_default(), ) { self.set_dist_reference(Some(reference.clone())); self.set_dist_url(Some(Preg::replace( - "{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i", + php_regex!("{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i"), &reference, &self.get_dist_url().unwrap_or_default(), ))); diff --git a/crates/shirabe/src/package/version/version_bumper.rs b/crates/shirabe/src/package/version/version_bumper.rs index 4f2d3242..e1f58942 100644 --- a/crates/shirabe/src/package/version/version_bumper.rs +++ b/crates/shirabe/src/package/version/version_bumper.rs @@ -7,6 +7,7 @@ use crate::package::version::VersionParser; use crate::util::Platform; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; +use shirabe_php_shim::php_regex; use shirabe_semver::Intervals; use shirabe_semver::constraint::AnyConstraint; @@ -45,11 +46,12 @@ impl VersionBumper { return Ok(pretty_constraint); } - let major = Preg::replace(r"{^([1-9][0-9]*|0\.\d+).*}", "$1", &version); - let version_without_suffix = Preg::replace(r"{(?:\.(?:0|9999999))+(-dev)?$}", "", &version); + let major = Preg::replace(php_regex!(r"{^([1-9][0-9]*|0\.\d+).*}"), "$1", &version); + let version_without_suffix = + Preg::replace(php_regex!(r"{(?:\.(?:0|9999999))+(-dev)?$}"), "", &version); let new_pretty_constraint = format!("^{}", version_without_suffix); - if !Preg::is_match(r"{^\^\d+(\.\d+)*$}", &new_pretty_constraint) { + if !Preg::is_match(php_regex!(r"{^\^\d+(\.\d+)*$}"), &new_pretty_constraint) { return Ok(pretty_constraint); } diff --git a/crates/shirabe/src/package/version/version_guesser.rs b/crates/shirabe/src/package/version/version_guesser.rs index 249646c4..add59ead 100644 --- a/crates/shirabe/src/package/version/version_guesser.rs +++ b/crates/shirabe/src/package/version/version_guesser.rs @@ -15,7 +15,7 @@ use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; use shirabe_php_shim::{ PHP_INT_MAX, PhpMixed, RuntimeException, array_keys, array_map, array_merge, empty, - function_exists, implode, is_string, json_encode, preg_quote, str_replace, strlen, + function_exists, implode, is_string, json_encode, php_regex, preg_quote, str_replace, strlen, strnatcasecmp, strpos, substr, trim, usort, }; @@ -163,10 +163,13 @@ impl VersionGuesser { } if "-dev" == substr(version_data.version.as_deref().unwrap_or(""), -4, None) - && Preg::is_match(r"{\.9{7}}", version_data.version.as_deref().unwrap_or("")) + && Preg::is_match( + php_regex!(r"{\.9{7}}"), + version_data.version.as_deref().unwrap_or(""), + ) { version_data.pretty_version = Some(Preg::replace( - r"{(\.9{7})+}", + php_regex!(r"{(\.9{7})+}"), ".x", version_data.version.as_deref().unwrap_or(""), )); @@ -185,12 +188,12 @@ impl VersionGuesser { None, ) && Preg::is_match( - r"{\.9{7}}", + php_regex!(r"{\.9{7}}"), version_data.feature_version.as_deref().unwrap_or(""), ) { version_data.feature_pretty_version = Some(Preg::replace( - r"{(\.9{7})+}", + php_regex!(r"{(\.9{7})+}"), ".x", version_data.feature_version.as_deref().unwrap_or(""), )); @@ -237,7 +240,9 @@ impl VersionGuesser { if !branch.is_empty() { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); if Preg::is_match3( - r"{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}", + php_regex!( + r"{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}" + ), &branch, Some(&mut m), ) { @@ -263,11 +268,13 @@ impl VersionGuesser { if !branch.is_empty() && { let mut tmp: IndexMap<CaptureKey, String> = IndexMap::new(); - !Preg::is_match3(r"{^ *.+/HEAD }", &branch, Some(&mut tmp)) + !Preg::is_match3(php_regex!(r"{^ *.+/HEAD }"), &branch, Some(&mut tmp)) } { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); if Preg::is_match3( - r"{^(?:\* )? *((?:remotes/(?:origin|upstream)/)?[^\s/]+) *([a-f0-9]+) .*$}", + php_regex!( + r"{^(?:\* )? *((?:remotes/(?:origin|upstream)/)?[^\s/]+) *([a-f0-9]+) .*$}" + ), &branch, Some(&mut m), ) { @@ -516,7 +523,8 @@ impl VersionGuesser { ) .is_some(); if !has_branch_alias || has_self_version { - let branch = Preg::replace(r"{^dev-}", "", version.as_deref().unwrap_or("")); + let branch = + Preg::replace(php_regex!(r"{^dev-}"), "", version.as_deref().unwrap_or("")); let mut length: i64 = PHP_INT_MAX; // return directly, if branch is configured to be non-feature branch @@ -549,7 +557,8 @@ impl VersionGuesser { let mut last_index: i64 = -1; for (index, candidate) in branches.iter().enumerate() { let index = index as i64; - let candidate_version = Preg::replace(r"{^remotes/\S+/}", "", candidate); + let candidate_version = + Preg::replace(php_regex!(r"{^remotes/\S+/}"), "", candidate); // do not compare against itself or other feature branches if candidate == &branch @@ -625,7 +634,7 @@ impl VersionGuesser { } !Preg::is_match( - &format!( + format!( r"{{^({}|master|main|latest|next|current|support|tip|trunk|default|develop|\d+\..+)$}}", non_feature_branches, ), @@ -772,7 +781,11 @@ impl VersionGuesser { } }; let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); - if Preg::is_match3(r"{^(\d+(?:\.\d+)*)-dev$}i", &version, Some(&mut m)) { + if Preg::is_match3( + php_regex!(r"{^(\d+(?:\.\d+)*)-dev$}i"), + &version, + Some(&mut m), + ) { return Ok(format!( "{}.x-dev", m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default() diff --git a/crates/shirabe/src/package/version/version_parser.rs b/crates/shirabe/src/package/version/version_parser.rs index 3527722c..8cf3aa72 100644 --- a/crates/shirabe/src/package/version/version_parser.rs +++ b/crates/shirabe/src/package/version/version_parser.rs @@ -3,6 +3,7 @@ use crate::repository::PlatformRepository; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; +use shirabe_php_shim::php_regex; use shirabe_semver::Semver; use shirabe_semver::VersionParser as SemverVersionParser; use shirabe_semver::constraint::AnyConstraint; @@ -49,11 +50,18 @@ impl VersionParser { let count = pairs.len(); let mut i = 0_usize; while i < count { - let mut pair = Preg::replace(r"{^([^=: ]+)[=: ](.*)$}", "$1 $2", pairs[i].trim()); + let mut pair = Preg::replace( + php_regex!(r"{^([^=: ]+)[=: ](.*)$}"), + "$1 $2", + pairs[i].trim(), + ); if !pair.contains(' ') && i + 1 < count && !pairs[i + 1].contains('/') - && !Preg::is_match(r"{(?<=[a-z0-9_/-])\*|\*(?=[a-z0-9_/-])}i", &pairs[i + 1]) + && !Preg::is_match( + php_regex!(r"{(?<=[a-z0-9_/-])\*|\*(?=[a-z0-9_/-])}i"), + &pairs[i + 1], + ) && !PlatformRepository::is_platform_package(&pairs[i + 1]) { pair += &format!(" {}", pairs[i + 1]); diff --git a/crates/shirabe/src/package/version/version_selector.rs b/crates/shirabe/src/package/version/version_selector.rs index 48b045eb..ff5e7586 100644 --- a/crates/shirabe/src/package/version/version_selector.rs +++ b/crates/shirabe/src/package/version/version_selector.rs @@ -18,7 +18,8 @@ use crate::repository::RepositorySetInterface; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; use shirabe_php_shim::{ - PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION, strtolower, version_compare, + PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION, php_regex, strtolower, + version_compare, }; use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::SimpleConstraint; @@ -280,7 +281,11 @@ impl VersionSelector { if let Some(extra) = extra && extra != VersionParser::DEFAULT_BRANCH_ALIAS { - let new_extra = Preg::replace(r"{^(\d+\.\d+\.\d+)(\.9999999)-dev$}", "$1.0", &extra); + let new_extra = Preg::replace( + php_regex!(r"{^(\d+\.\d+\.\d+)(\.9999999)-dev$}"), + "$1.0", + &extra, + ); if new_extra != extra { let new_extra = new_extra.replace(".9999999", ".0"); return self.transform_version(&new_extra, &new_extra, "dev"); @@ -299,7 +304,7 @@ impl VersionSelector { let semantic_version_parts: Vec<&str> = version.split('.').collect(); if semantic_version_parts.len() == 4 - && Preg::is_match(r"{^\d+\D?}", semantic_version_parts[3]) + && Preg::is_match(php_regex!(r"{^\d+\D?}"), semantic_version_parts[3]) { let mut parts: Vec<String> = semantic_version_parts .iter() |
