aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-03 21:05:15 +0900
committernsfisis <nsfisis@gmail.com>2026-06-03 21:05:15 +0900
commit27764ef4447a02e5c59bbcc7b4547838aae82d89 (patch)
treeade2b2c9ba2d4cc0a0b3ed66aa9b4e04754a9b7a /crates/shirabe/src/repository
parenteacd2abcc53659a9fa20b1274a30ac4d9ad8bdb6 (diff)
downloadphp-shirabe-27764ef4447a02e5c59bbcc7b4547838aae82d89.tar.gz
php-shirabe-27764ef4447a02e5c59bbcc7b4547838aae82d89.tar.zst
php-shirabe-27764ef4447a02e5c59bbcc7b4547838aae82d89.zip
refactor(downloader,repository,json): drop stale try/catch TODOs; fix svn getFileContent catch type
Remove 17 TODO(phase-b) markers across exception-modeling sites where the existing single-Result closure+match already faithfully models the PHP try/catch (catch paths only rethrow, retry, log, or silently ignore and never yield a recoverable value, so a double Result is unnecessary). Fix SvnDriver::get_file_content to catch only RuntimeException (matching PHP's catch RuntimeException) and extract its .message instead of calling e.to_string() on the anyhow::Error, which would panic while the shim exception Display is unimplemented; other errors now propagate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/repository')
-rw-r--r--crates/shirabe/src/repository/filesystem_repository.rs1
-rw-r--r--crates/shirabe/src/repository/repository_set.rs1
-rw-r--r--crates/shirabe/src/repository/vcs/svn_driver.rs8
3 files changed, 4 insertions, 6 deletions
diff --git a/crates/shirabe/src/repository/filesystem_repository.rs b/crates/shirabe/src/repository/filesystem_repository.rs
index a721b4f..db9a8c6 100644
--- a/crates/shirabe/src/repository/filesystem_repository.rs
+++ b/crates/shirabe/src/repository/filesystem_repository.rs
@@ -94,7 +94,6 @@ impl FilesystemRepository {
return Ok(());
}
- // TODO(phase-b): use anyhow::Result<Result<T, E>> to model PHP try/catch
let packages: PhpMixed = match (|| -> Result<PhpMixed> {
let data = self.file.read()?;
let packages_value = if let PhpMixed::Array(ref m) = data {
diff --git a/crates/shirabe/src/repository/repository_set.rs b/crates/shirabe/src/repository/repository_set.rs
index 1323fbd..077c3f6 100644
--- a/crates/shirabe/src/repository/repository_set.rs
+++ b/crates/shirabe/src/repository/repository_set.rs
@@ -374,7 +374,6 @@ impl RepositorySet {
) -> Result<IndexMap<String, Vec<PartialOrFullSecurityAdvisory>>> {
let mut repo_advisories: Vec<IndexMap<String, Vec<PartialOrFullSecurityAdvisory>>> = vec![];
for repository in &self.repositories {
- // TODO(phase-b): use anyhow::Result<Result<T, E>> to model PHP try/catch
let attempt: Result<()> = (|| -> Result<()> {
let repo_ref = repository.borrow();
let Some(advisory_repo) = repo_ref.as_advisory_provider() else {
diff --git a/crates/shirabe/src/repository/vcs/svn_driver.rs b/crates/shirabe/src/repository/vcs/svn_driver.rs
index 2812c8d..23ea703 100644
--- a/crates/shirabe/src/repository/vcs/svn_driver.rs
+++ b/crates/shirabe/src/repository/vcs/svn_driver.rs
@@ -171,7 +171,6 @@ impl SvnDriver {
}
}
- // TODO(phase-b): use anyhow::Result<Result<T, E>> to model PHP try/catch
let base_result =
self.get_file_content("composer.json", identifier)
.and_then(|file_content| {
@@ -259,14 +258,16 @@ impl SvnDriver {
(identifier.clone(), String::new())
};
- // TODO(phase-b): use anyhow::Result<Result<T, E>> to model PHP try/catch
let output: String = match self.execute(
vec!["svn".to_string(), "cat".to_string()],
&format!("{}{}{}", self.base_url, path, rev),
) {
Ok(o) => o,
Err(e) => {
- return Err(TransportException::new(e.to_string(), 0).into());
+ if let Some(e) = e.downcast_ref::<RuntimeException>() {
+ return Err(TransportException::new(e.message.clone(), 0).into());
+ }
+ return Err(e);
}
};
if trim(&output, None) == "" {
@@ -557,7 +558,6 @@ impl SvnDriver {
.set_cache_credentials(self.cache_credentials);
}
- // TODO(phase-b): use anyhow::Result<Result<T, E>> to model PHP try/catch
match self
.util
.as_mut()