From 7e31bab9ff7209c9b6d7928a581d7a449846f42e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 2 Aug 2026 17:32:43 +0900 Subject: fix(json): propagate JsonFile::encode errors instead of unwrapping PHP's JsonFile::encode throws a RuntimeException when json_encode fails; the port swallowed that into an .unwrap() marked TODO(phase-c). Return anyhow::Result from encode/encode_with_options and propagate at every call site (print_table and list_repositories become Result-returning to carry it). Co-Authored-By: Claude Fable 5 --- crates/shirabe/src/command/repository_command.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'crates/shirabe/src/command/repository_command.rs') diff --git a/crates/shirabe/src/command/repository_command.rs b/crates/shirabe/src/command/repository_command.rs index 31d2de3f..d23e114c 100644 --- a/crates/shirabe/src/command/repository_command.rs +++ b/crates/shirabe/src/command/repository_command.rs @@ -50,7 +50,7 @@ impl RepositoryCommand { command } - fn list_repositories(&self, mut repos: IndexMap) { + fn list_repositories(&self, mut repos: IndexMap) -> anyhow::Result<()> { let io = self.get_io(); let mut packagist_present = false; @@ -84,7 +84,7 @@ impl RepositoryCommand { if repos.is_empty() { io.write("No repositories configured"); - return; + return Ok(()); } for (key, repo) in &repos { @@ -111,14 +111,19 @@ impl RepositoryCommand { .get("type") .and_then(|v| v.as_string()) .unwrap_or("unknown"); - let url = repo_map + let url = match repo_map .get("url") .and_then(|v| v.as_string()) .map(|s| s.to_string()) - .unwrap_or_else(|| JsonFile::encode(repo)); + { + Some(url) => url, + None => JsonFile::encode(repo)?, + }; io.write(&format!("[{}] {} {}", name, r#type, url)); } } + + Ok(()) } /// PHP: private function suggestTypeForAdd(): \Closure (a static closure — `this` unused) @@ -352,7 +357,7 @@ impl Command for RepositoryCommand { match action.as_str() { "list" | "ls" | "show" => { - self.list_repositories(repos); + self.list_repositories(repos)?; Ok(0) } "add" => { -- cgit v1.3.1