aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/vcs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/repository/vcs')
-rw-r--r--crates/shirabe/src/repository/vcs/git_bitbucket_driver.rs12
-rw-r--r--crates/shirabe/src/repository/vcs/svn_driver.rs17
-rw-r--r--crates/shirabe/src/repository/vcs/vcs_driver.rs1
3 files changed, 16 insertions, 14 deletions
diff --git a/crates/shirabe/src/repository/vcs/git_bitbucket_driver.rs b/crates/shirabe/src/repository/vcs/git_bitbucket_driver.rs
index 7eb253a..59e6b88 100644
--- a/crates/shirabe/src/repository/vcs/git_bitbucket_driver.rs
+++ b/crates/shirabe/src/repository/vcs/git_bitbucket_driver.rs
@@ -494,7 +494,9 @@ impl GitBitbucketDriver {
/// @inheritDoc
pub fn get_source(&self, identifier: &str) -> IndexMap<String, String> {
if let Some(fallback) = self.fallback_driver.as_ref() {
- // TODO(phase-b): trait returns Result; flatten for the inherent signature here
+ // TODO(phase-c): PHP getSource is infallible (: array), but the Rust trait made it
+ // Result, so the fallback's Result is flattened here. The faithful fix is making the
+ // VcsDriverInterface get_source/get_dist infallible across all implementations.
return fallback.get_source(identifier).unwrap_or_default();
}
@@ -511,7 +513,7 @@ impl GitBitbucketDriver {
/// @inheritDoc
pub fn get_dist(&self, identifier: &str) -> Option<IndexMap<String, String>> {
if let Some(fallback) = self.fallback_driver.as_ref() {
- // TODO(phase-b): trait returns Result; flatten for the inherent signature here
+ // TODO(phase-c): see get_source above — the trait's over-fallibility is flattened here.
return fallback.get_dist(identifier).ok().flatten();
}
@@ -886,14 +888,14 @@ impl GitBitbucketDriver {
}
if !extension_loaded("openssl") {
- io.write_error(
+ io.write_error3(
&format!(
"Skipping Bitbucket git driver for {} because the OpenSSL PHP extension is missing.",
url
),
+ true,
+ io_interface::VERBOSE,
);
- // PHP: writeError(..., true, io_interface::VERBOSE)
- // TODO(phase-b): io_interface::VERBOSE verbosity argument
return Ok(false);
}
diff --git a/crates/shirabe/src/repository/vcs/svn_driver.rs b/crates/shirabe/src/repository/vcs/svn_driver.rs
index f4e2bba..911e982 100644
--- a/crates/shirabe/src/repository/vcs/svn_driver.rs
+++ b/crates/shirabe/src/repository/vcs/svn_driver.rs
@@ -33,8 +33,6 @@ pub struct SvnDriver {
/// @var ?string
pub(crate) root_identifier: Option<String>,
- /// @var string|false
- // TODO(phase-b): PHP uses 'false' as a sentinel; model as Option<String>
pub(crate) trunk_path: Option<String>,
/// @var string
pub(crate) branches_path: String,
@@ -79,8 +77,10 @@ impl SvnDriver {
SvnUtil::clean_env();
- if let Some(PhpMixed::String(v)) = self.inner.repo_config.get("trunk-path").cloned() {
- self.trunk_path = Some(v);
+ match self.inner.repo_config.get("trunk-path") {
+ Some(PhpMixed::Bool(false)) => self.trunk_path = None,
+ Some(PhpMixed::String(v)) => self.trunk_path = Some(v.clone()),
+ _ => {}
}
if let Some(PhpMixed::String(v)) = self.inner.repo_config.get("branches-path").cloned() {
self.branches_path = v;
@@ -100,10 +100,11 @@ impl SvnDriver {
self.package_path = format!("/{}", trim(&v, Some("/")));
}
- if let Some(trunk_path) = &self.trunk_path {
- if let Some(pos) = strrpos(&self.inner.url, &format!("/{}", trunk_path)) {
- self.base_url = substr(&self.inner.url, 0, Some(pos as i64));
- }
+ if let Some(pos) = strrpos(
+ &self.inner.url,
+ &format!("/{}", self.trunk_path.as_deref().unwrap_or("")),
+ ) {
+ self.base_url = substr(&self.inner.url, 0, Some(pos as i64));
}
self.inner.cache = Some(Cache::new(
diff --git a/crates/shirabe/src/repository/vcs/vcs_driver.rs b/crates/shirabe/src/repository/vcs/vcs_driver.rs
index 1c05933..740d00e 100644
--- a/crates/shirabe/src/repository/vcs/vcs_driver.rs
+++ b/crates/shirabe/src/repository/vcs/vcs_driver.rs
@@ -234,7 +234,6 @@ pub trait VcsDriver: VcsDriverInterface {
if self.should_cache(identifier) {
if let Some(ref composer_map) = composer {
- // TODO(phase-b): use a dedicated encode-with-options helper; reuse encode for now.
let composer_mixed = PhpMixed::Array(
composer_map
.iter()