diff options
Diffstat (limited to 'crates/shirabe/src/repository/vcs')
| -rw-r--r-- | crates/shirabe/src/repository/vcs/git_bitbucket_driver.rs | 12 | ||||
| -rw-r--r-- | crates/shirabe/src/repository/vcs/svn_driver.rs | 17 | ||||
| -rw-r--r-- | crates/shirabe/src/repository/vcs/vcs_driver.rs | 1 |
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() |
