aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/util')
-rw-r--r--crates/shirabe/src/util/composer_mirror.rs10
-rw-r--r--crates/shirabe/src/util/filesystem.rs18
-rw-r--r--crates/shirabe/src/util/forgejo_url.rs5
-rw-r--r--crates/shirabe/src/util/git.rs94
-rw-r--r--crates/shirabe/src/util/github.rs9
-rw-r--r--crates/shirabe/src/util/hg.rs6
-rw-r--r--crates/shirabe/src/util/http/response.rs3
-rw-r--r--crates/shirabe/src/util/http_downloader.rs10
-rw-r--r--crates/shirabe/src/util/process_executor.rs21
-rw-r--r--crates/shirabe/src/util/remote_filesystem.rs5
-rw-r--r--crates/shirabe/src/util/svn.rs24
-rw-r--r--crates/shirabe/src/util/url.rs20
12 files changed, 84 insertions, 141 deletions
diff --git a/crates/shirabe/src/util/composer_mirror.rs b/crates/shirabe/src/util/composer_mirror.rs
index 1455613d..7344bfaf 100644
--- a/crates/shirabe/src/util/composer_mirror.rs
+++ b/crates/shirabe/src/util/composer_mirror.rs
@@ -1,6 +1,6 @@
//! ref: composer/src/Composer/Util/ComposerMirror.php
-use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
+use shirabe_pcre::{CaptureKey, Preg};
use shirabe_php_shim::{hash, php_regex};
pub struct ComposerMirror;
@@ -53,14 +53,11 @@ impl ComposerMirror {
url: &str,
r#type: Option<&str>,
) -> String {
- let mut gh_matches = PregMatchedGroups::new();
- let mut bb_matches = PregMatchedGroups::new();
- let normalized_url = if Preg::match3(
+ let normalized_url = if let Some(gh_matches) = Preg::match3(
php_regex!(
r"#^(?:(?:https?|git)://github\.com/|git@github\.com:)([^/]+)/(.+?)(?:\.git)?$#"
),
url,
- Some(&mut gh_matches),
) {
format!(
"gh-{}/{}",
@@ -73,10 +70,9 @@ impl ComposerMirror {
.cloned()
.unwrap_or_default(),
)
- } else if Preg::match3(
+ } else if let Some(bb_matches) = Preg::match3(
php_regex!(r"#^https://bitbucket\.org/([^/]+)/(.+?)(?:\.git)?/?$#"),
url,
- Some(&mut bb_matches),
) {
format!(
"bb-{}/{}",
diff --git a/crates/shirabe/src/util/filesystem.rs b/crates/shirabe/src/util/filesystem.rs
index 21512a81..d59df55e 100644
--- a/crates/shirabe/src/util/filesystem.rs
+++ b/crates/shirabe/src/util/filesystem.rs
@@ -246,7 +246,7 @@ impl Filesystem {
return Ok(Some(true));
}
- if Preg::is_match3(php_regex!("{^(?:[a-z]:)?[/\\\\]+$}i"), directory, None) {
+ if Preg::is_match3(php_regex!("{^(?:[a-z]:)?[/\\\\]+$}i"), directory).is_some() {
return Err(RuntimeException::new(format!("Aborting an attempted deletion of {}, this was probably not intended, if it is a real use case please report it.", directory))
.into());
}
@@ -578,7 +578,7 @@ impl Filesystem {
let mut common_path = to.clone();
while strpos(&format!("{}/", from), &format!("{}/", common_path)) != Some(0)
&& "/" != common_path
- && !Preg::is_match3(php_regex!("{^[A-Z]:/?$}i"), &common_path, None)
+ && Preg::is_match3(php_regex!("{^[A-Z]:/?$}i"), &common_path).is_none()
{
common_path = strtr(&dirname(&common_path), "\\", "/");
}
@@ -635,7 +635,7 @@ impl Filesystem {
let mut common_path = to.clone();
while strpos(&format!("{}/", from), &format!("{}/", common_path)) != Some(0)
&& "/" != common_path
- && !Preg::is_match3(php_regex!("{^[A-Z]:/?$}i"), &common_path, None)
+ && Preg::is_match3(php_regex!("{^[A-Z]:/?$}i"), &common_path).is_none()
&& "." != common_path
{
common_path = strtr(&dirname(&common_path), "\\", "/");
@@ -735,11 +735,9 @@ impl Filesystem {
}
// extract a prefix being a protocol://, protocol:, protocol://drive: or simply drive:
- let mut prefix_match = shirabe_pcre::PregMatchedGroups::new();
- if Preg::is_match3(
+ if let Some(prefix_match) = Preg::is_match3(
php_regex!("{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix"),
&path,
- Some(&mut prefix_match),
) {
prefix = prefix_match
.get(&shirabe_pcre::CaptureKey::ByIndex(1))
@@ -785,7 +783,7 @@ impl Filesystem {
/// And other possible unforeseen disasters, see https://github.com/composer/composer/pull/9422
pub fn trim_trailing_slash(path: &str) -> String {
let mut path = path.to_string();
- if !Preg::is_match3(php_regex!("{^[/\\\\]+$}"), &path, None) {
+ if Preg::is_match3(php_regex!("{^[/\\\\]+$}"), &path).is_none() {
path = rtrim(&path, Some("/\\"));
}
@@ -802,15 +800,15 @@ impl Filesystem {
"{^(file://(?!//)|/(?!/)|/?[a-z]:[\\\\/]|\\.\\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i"
),
path,
- None,
- );
+ )
+ .is_some();
}
Preg::is_match3(
php_regex!("{^(file://|/|/?[a-z]:[\\\\/]|\\.\\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i"),
path,
- None,
)
+ .is_some()
}
pub fn get_platform_path(path: &str) -> String {
diff --git a/crates/shirabe/src/util/forgejo_url.rs b/crates/shirabe/src/util/forgejo_url.rs
index 7a5d2b10..e5304f5d 100644
--- a/crates/shirabe/src/util/forgejo_url.rs
+++ b/crates/shirabe/src/util/forgejo_url.rs
@@ -37,10 +37,7 @@ impl ForgejoUrl {
pub fn try_from(repo_url: Option<&str>) -> Option<Self> {
let repo_url = repo_url?;
- let mut matches = shirabe_pcre::PregMatchedGroups::new();
- if !Preg::match3(Self::URL_REGEX, repo_url, Some(&mut matches)) {
- return None;
- }
+ let matches = Preg::match3(Self::URL_REGEX, repo_url)?;
use shirabe_pcre::CaptureKey;
let m: Vec<String> = (0..5)
.map(|i| {
diff --git a/crates/shirabe/src/util/git.rs b/crates/shirabe/src/util/git.rs
index 0f463aea..2b012d4c 100644
--- a/crates/shirabe/src/util/git.rs
+++ b/crates/shirabe/src/util/git.rs
@@ -226,11 +226,9 @@ impl Git {
&mut output,
cwd,
)?;
- let mut m = PregMatchedGroups::new();
- if Preg::is_match3(
+ if let Some(m) = Preg::is_match3(
php_regex!(r"{^(?:composer|origin)\s+https?://(.+):(.+)@([^/]+)}im"),
&output,
- Some(&mut m),
) {
let m3 = m.get(&CaptureKey::ByIndex(3)).cloned().unwrap_or_default();
if !self.io.has_authentication(&m3) {
@@ -248,14 +246,12 @@ impl Git {
let protocols = self.config.borrow_mut().get("github-protocols");
// public github, autoswitch protocols
// @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
- let mut m = PregMatchedGroups::new();
- if Preg::is_match3(
+ if let Some(m) = Preg::is_match3(
format!(
"{{^(?:https?|git)://{}/(.*)}}",
Self::get_github_domains_regex(&self.config.borrow())
),
url,
- Some(&mut m),
) {
let mut messages: Vec<String> = vec![];
let protocols_list: Vec<String> = match &protocols {
@@ -344,23 +340,23 @@ impl Git {
let mut error_msg = self.process.borrow().get_error_output().to_string();
// private github repository without ssh key access, try https with auth
// @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
- let mut m = PregMatchedGroups::new();
let github_matched = Preg::is_match3(
format!(
"{{^git@{}:(.+?)\\.git$}}i",
Self::get_github_domains_regex(&self.config.borrow())
),
url,
- Some(&mut m),
- ) || Preg::is_match3(
- format!(
- "{{^https?://{}/(.*?)(?:\\.git)?$}}i",
- Self::get_github_domains_regex(&self.config.borrow())
- ),
- url,
- Some(&mut m),
- );
- if github_matched {
+ )
+ .or_else(|| {
+ Preg::is_match3(
+ format!(
+ "{{^https?://{}/(.*?)(?:\\.git)?$}}i",
+ Self::get_github_domains_regex(&self.config.borrow())
+ ),
+ url,
+ )
+ });
+ if let Some(m) = github_matched {
let m1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default();
let m2 = m.get(&CaptureKey::ByIndex(2)).cloned().unwrap_or_default();
if !self.io.has_authentication(&m1) {
@@ -410,15 +406,12 @@ impl Git {
credentials = vec![rawurlencode(&username), rawurlencode(&password)];
error_msg = self.process.borrow().get_error_output().to_string();
}
- } else if Preg::is_match3(
+ } else if let Some(m) = Preg::is_match3(
php_regex!(r"{^(https?)://(bitbucket\.org)/(.*?)(?:\.git)?$}i"),
url,
- Some(&mut m),
- ) || Preg::is_match3(
- php_regex!(r"{^(git)@(bitbucket\.org):(.+?\.git)$}i"),
- url,
- Some(&mut m),
- ) {
+ )
+ .or_else(|| Preg::is_match3(php_regex!(r"{^(git)@(bitbucket\.org):(.+?\.git)$}i"), url))
+ {
// bitbucket either through oauth or app password, with fallback to ssh.
let mut bitbucket_util = Bitbucket::new(
self.io.clone(),
@@ -556,21 +549,22 @@ impl Git {
}
error_msg = self.process.borrow().get_error_output().to_string();
- } else if Preg::is_match3(
+ } else if let Some(m) = Preg::is_match3(
format!(
"{{^(git)@{}:(.+?\\.git)$}}i",
Self::get_gitlab_domains_regex(&self.config.borrow())
),
url,
- Some(&mut m),
- ) || Preg::is_match3(
- format!(
- "{{^(https?)://{}/(.*)}}i",
- Self::get_gitlab_domains_regex(&self.config.borrow())
- ),
- url,
- Some(&mut m),
- ) {
+ )
+ .or_else(|| {
+ Preg::is_match3(
+ format!(
+ "{{^(https?)://{}/(.*)}}i",
+ Self::get_gitlab_domains_regex(&self.config.borrow())
+ ),
+ url,
+ )
+ }) {
let mut m1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default();
let m2 = m.get(&CaptureKey::ByIndex(2)).cloned().unwrap_or_default();
let m3 = m.get(&CaptureKey::ByIndex(3)).cloned().unwrap_or_default();
@@ -1090,14 +1084,7 @@ impl Git {
}
fn get_authentication_failure(&self, url: &str) -> Option<PregMatchedGroups> {
- let mut m = PregMatchedGroups::new();
- if !Preg::is_match3(
- php_regex!(r"{^(https?://)([^/]+)(.*)$}i"),
- url,
- Some(&mut m),
- ) {
- return None;
- }
+ let m = Preg::is_match3(php_regex!(r"{^(https?://)([^/]+)(.*)$}i"), url)?;
let auth_failures = [
"fatal: Authentication failed",
@@ -1179,12 +1166,9 @@ impl Git {
.borrow()
.split_lines(output_mixed.as_string().unwrap_or(""));
for line in lines {
- let mut matches = PregMatchedGroups::new();
- if Preg::is_match3(
- php_regex!(r"{^\s*HEAD branch:\s(.+)\s*$}m"),
- &line,
- Some(&mut matches),
- ) {
+ if let Some(matches) =
+ Preg::is_match3(php_regex!(r"{^\s*HEAD branch:\s(.+)\s*$}m"), &line)
+ {
return Ok(Some(
matches
.get(&CaptureKey::ByIndex(1))
@@ -1307,15 +1291,11 @@ impl Git {
&mut output,
Option::<&str>::None,
);
- if exit_code == 0 {
- let mut matches = PregMatchedGroups::new();
- if Preg::is_match3(
- php_regex!(r"/^git version (\d+(?:\.\d+)+)/m"),
- &output,
- Some(&mut matches),
- ) {
- *version = Some(matches.get(&CaptureKey::ByIndex(1)).cloned());
- }
+ if exit_code == 0
+ && let Some(matches) =
+ Preg::is_match3(php_regex!(r"/^git version (\d+(?:\.\d+)+)/m"), &output)
+ {
+ *version = Some(matches.get(&CaptureKey::ByIndex(1)).cloned());
}
}
version.clone().unwrap_or(None)
diff --git a/crates/shirabe/src/util/github.rs b/crates/shirabe/src/util/github.rs
index b7659572..9c22a2b3 100644
--- a/crates/shirabe/src/util/github.rs
+++ b/crates/shirabe/src/util/github.rs
@@ -8,7 +8,7 @@ use crate::io::io_interface;
use crate::util::HttpDownloader;
use crate::util::ProcessExecutor;
use indexmap::IndexMap;
-use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
+use shirabe_pcre::{CaptureKey, Preg};
use shirabe_php_shim::Catch as _;
use shirabe_php_shim::{PhpMixed, date_local, in_array_loose, php_regex, stripos, strtolower};
@@ -325,12 +325,7 @@ impl GitHub {
if stripos(header, "x-github-sso: required").is_none() {
continue;
}
- let mut caps = PregMatchedGroups::new();
- if Preg::match3(
- php_regex!(r"{\burl=(?P<url>[^\s;]+)}"),
- header,
- Some(&mut caps),
- ) {
+ if let Some(caps) = Preg::match3(php_regex!(r"{\burl=(?P<url>[^\s;]+)}"), header) {
return caps.get(&CaptureKey::ByName("url".to_string())).cloned();
}
}
diff --git a/crates/shirabe/src/util/hg.rs b/crates/shirabe/src/util/hg.rs
index d9e58623..29d305f0 100644
--- a/crates/shirabe/src/util/hg.rs
+++ b/crates/shirabe/src/util/hg.rs
@@ -5,7 +5,7 @@ use crate::io::IOInterface;
use crate::io::IOInterfaceImmutable;
use crate::util::ProcessExecutor;
use crate::util::Url;
-use shirabe_pcre::{Preg, PregNamedGroups};
+use shirabe_pcre::Preg;
use shirabe_php_shim::{php_regex, rawurlencode};
use std::sync::OnceLock;
@@ -56,16 +56,14 @@ impl Hg {
}
// Try with the authentication information available
- let mut matches = PregNamedGroups::new();
let matched = Preg::is_match_named(
php_regex!(
r"{^(?P<proto>ssh|https?)://(?:(?P<user>[^:@]+)(?::(?P<pass>[^:@]+))?@)?(?P<host>[^/]+)(?P<path>/.*)?}mi"
),
&url,
- &mut matches,
);
- if matched
+ if let Some(matches) = matched
&& self
.io
.has_authentication(matches.get("host").map(|s| s.as_str()).unwrap_or(""))
diff --git a/crates/shirabe/src/util/http/response.rs b/crates/shirabe/src/util/http/response.rs
index 6ce52643..ea961768 100644
--- a/crates/shirabe/src/util/http/response.rs
+++ b/crates/shirabe/src/util/http/response.rs
@@ -65,8 +65,7 @@ impl Response {
let mut value = None;
let pattern = format!("{{^{}:\\s*(.+?)\\s*$}}i", preg_quote(name, None));
for header in headers {
- let mut matches = shirabe_pcre::PregMatchedGroups::new();
- if Preg::match3(&pattern, header, Some(&mut matches))
+ if let Some(matches) = Preg::match3(&pattern, header)
&& let Some(s) = matches.get(&shirabe_pcre::CaptureKey::ByIndex(1))
{
value = Some(s.clone());
diff --git a/crates/shirabe/src/util/http_downloader.rs b/crates/shirabe/src/util/http_downloader.rs
index c478d445..b06d7004 100644
--- a/crates/shirabe/src/util/http_downloader.rs
+++ b/crates/shirabe/src/util/http_downloader.rs
@@ -16,7 +16,7 @@ use crate::util::http::CurlDownloader;
use crate::util::http::Response;
use crate::util::sync_executor;
use indexmap::IndexMap;
-use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
+use shirabe_pcre::{CaptureKey, Preg};
use shirabe_php_shim::Catch as _;
use shirabe_php_shim::{
InvalidArgumentException, LogicException, PhpMixed, array_replace_recursive, extension_loaded,
@@ -240,12 +240,8 @@ impl HttpDownloader {
let origin = Url::get_origin(&self.config.borrow(), url);
// capture username/password from URL if there is one
- let mut m = PregMatchedGroups::new();
- if Preg::is_match3(
- php_regex!(r"{^https?://([^:/]+):([^@/]+)@([^/]+)}i"),
- url,
- Some(&mut m),
- ) {
+ if let Some(m) = Preg::is_match3(php_regex!(r"{^https?://([^:/]+):([^@/]+)@([^/]+)}i"), url)
+ {
self.io.borrow_mut().set_authentication(
origin.clone(),
rawurldecode(
diff --git a/crates/shirabe/src/util/process_executor.rs b/crates/shirabe/src/util/process_executor.rs
index d87e2ff4..48fa415f 100644
--- a/crates/shirabe/src/util/process_executor.rs
+++ b/crates/shirabe/src/util/process_executor.rs
@@ -216,17 +216,16 @@ impl ProcessExecutor {
let mut process: Process;
if is_string(&command) {
let mut command_str = command.as_string().unwrap_or("").to_string();
- if Platform::is_windows() {
- let mut m = PregMatchedGroups::new();
- if Preg::is_match3(php_regex!(r"{^([^:/\\]++) }"), &command_str, Some(&mut m)) {
- let m1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default();
- command_str = substr_replace(
- &command_str,
- &Self::escape(&Self::get_executable(&m1)),
- 0,
- Some(strlen(&m1)),
- );
- }
+ if Platform::is_windows()
+ && let Some(m) = Preg::is_match3(php_regex!(r"{^([^:/\\]++) }"), &command_str)
+ {
+ let m1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default();
+ command_str = substr_replace(
+ &command_str,
+ &Self::escape(&Self::get_executable(&m1)),
+ 0,
+ Some(strlen(&m1)),
+ );
}
process = Process::from_shell_commandline(
diff --git a/crates/shirabe/src/util/remote_filesystem.rs b/crates/shirabe/src/util/remote_filesystem.rs
index 40a69f28..0bc004ce 100644
--- a/crates/shirabe/src/util/remote_filesystem.rs
+++ b/crates/shirabe/src/util/remote_filesystem.rs
@@ -13,7 +13,7 @@ use crate::util::Url;
use crate::util::http::ProxyManager;
use crate::util::http::Response;
use indexmap::IndexMap;
-use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
+use shirabe_pcre::{CaptureKey, Preg};
use shirabe_php_shim::Catch as _;
use shirabe_php_shim::{
PhpMixed, RuntimeException, STREAM_NOTIFY_FAILURE, STREAM_NOTIFY_FILE_SIZE_IS,
@@ -148,8 +148,7 @@ impl RemoteFilesystem {
pub fn find_status_code(headers: &[String]) -> Option<i64> {
let mut value: Option<i64> = None;
for header in headers {
- let mut m = PregMatchedGroups::new();
- if Preg::is_match3(php_regex!("{^HTTP/\\S+ (\\d+)}i"), header, Some(&mut m)) {
+ if let Some(m) = Preg::is_match3(php_regex!("{^HTTP/\\S+ (\\d+)}i"), header) {
value = m
.get(&CaptureKey::ByIndex(1))
.and_then(|s| s.parse().ok())
diff --git a/crates/shirabe/src/util/svn.rs b/crates/shirabe/src/util/svn.rs
index d07b3ffe..8018efa5 100644
--- a/crates/shirabe/src/util/svn.rs
+++ b/crates/shirabe/src/util/svn.rs
@@ -6,7 +6,7 @@ use crate::io::IOInterfaceImmutable;
use crate::io::io_interface;
use crate::util::Platform;
use crate::util::ProcessExecutor;
-use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
+use shirabe_pcre::{CaptureKey, Preg};
use shirabe_php_shim::{
LogicException, PhpMixed, RuntimeException, implode, parse_url, php_regex, stripos, strpos,
trim,
@@ -405,20 +405,14 @@ impl Svn {
&["svn".to_string(), "--version".to_string()],
&mut output,
None,
- ) {
- let mut matches = PregMatchedGroups::new();
- if Preg::is_match3(
- php_regex!(r"{(\d+(?:\.\d+)+)}"),
- &output,
- Some(&mut matches),
- ) {
- *cached = Some(
- matches
- .get(&CaptureKey::ByIndex(1))
- .cloned()
- .unwrap_or_default(),
- );
- }
+ ) && let Some(matches) = Preg::is_match3(php_regex!(r"{(\d+(?:\.\d+)+)}"), &output)
+ {
+ *cached = Some(
+ matches
+ .get(&CaptureKey::ByIndex(1))
+ .cloned()
+ .unwrap_or_default(),
+ );
}
}
diff --git a/crates/shirabe/src/util/url.rs b/crates/shirabe/src/util/url.rs
index 3afcd962..0a3722eb 100644
--- a/crates/shirabe/src/util/url.rs
+++ b/crates/shirabe/src/util/url.rs
@@ -2,7 +2,7 @@
use crate::config::Config;
use crate::util::GitHub;
-use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
+use shirabe_pcre::{CaptureKey, Preg};
use shirabe_php_shim::{PhpMixed, in_array_strict, parse_url, php_regex};
pub struct Url;
@@ -14,13 +14,11 @@ impl Url {
.unwrap_or_default();
if host == "api.github.com" || host == "github.com" || host == "www.github.com" {
- let mut m = PregMatchedGroups::new();
- if Preg::match3(
+ if let Some(m) = Preg::match3(
php_regex!(
r"{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/(zip|tar)ball/(.+)$}i"
),
&url,
- Some(&mut m),
) {
url = format!(
"https://api.github.com/repos/{}/{}/{}ball/{}",
@@ -29,12 +27,11 @@ impl Url {
m.get(&CaptureKey::ByIndex(3)).cloned().unwrap_or_default(),
r#ref
);
- } else if Preg::match3(
+ } else if let Some(m) = Preg::match3(
php_regex!(
r"{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/archive/.+\.(zip|tar)(?:\.gz)?$}i"
),
&url,
- Some(&mut m),
) {
url = format!(
"https://api.github.com/repos/{}/{}/{}ball/{}",
@@ -43,12 +40,11 @@ impl Url {
m.get(&CaptureKey::ByIndex(3)).cloned().unwrap_or_default(),
r#ref
);
- } else if Preg::match3(
+ } else if let Some(m) = Preg::match3(
php_regex!(
r"{^https?://api\.github\.com/repos/([^/]+)/([^/]+)/(zip|tar)ball(?:/.+)?$}i"
),
&url,
- Some(&mut m),
) {
url = format!(
"https://api.github.com/repos/{}/{}/{}ball/{}",
@@ -59,13 +55,11 @@ impl Url {
);
}
} else if host == "bitbucket.org" || host == "www.bitbucket.org" {
- let mut m = PregMatchedGroups::new();
- if Preg::match3(
+ if let Some(m) = Preg::match3(
php_regex!(
r"{^https?://(?:www\.)?bitbucket\.org/([^/]+)/([^/]+)/get/(.+)\.(zip|tar\.gz|tar\.bz2)$}i"
),
&url,
- Some(&mut m),
) {
url = format!(
"https://bitbucket.org/{}/{}/get/{}.{}",
@@ -76,13 +70,11 @@ impl Url {
);
}
} else if host == "gitlab.com" || host == "www.gitlab.com" {
- let mut m = PregMatchedGroups::new();
- if Preg::match3(
+ if let Some(m) = Preg::match3(
php_regex!(
r"{^https?://(?:www\.)?gitlab\.com/api/v[34]/projects/([^/]+)/repository/archive\.(zip|tar\.gz|tar\.bz2|tar)\?sha=.+$}i"
),
&url,
- Some(&mut m),
) {
url = format!(
"https://gitlab.com/api/v4/projects/{}/repository/archive.{}?sha={}",