diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-12 03:19:34 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-12 03:19:34 +0900 |
| commit | efe5bdb1987411a473d4af15451a376d20928245 (patch) | |
| tree | 54d3c9e7ab92cfc7d7ec3d90ca3f29e828d929c4 /crates/shirabe/src/util | |
| parent | 981cae63d9777b877aa9f96907c7995ec020fbf9 (diff) | |
| download | php-shirabe-efe5bdb1987411a473d4af15451a376d20928245.tar.gz php-shirabe-efe5bdb1987411a473d4af15451a376d20928245.tar.zst php-shirabe-efe5bdb1987411a473d4af15451a376d20928245.zip | |
refactor(php-shim): replace literal sprintf calls with format!
Convert every sprintf() call with a compile-time literal format string to
format!, implementing Display for PhpMixed (delegating to php_to_string) so
PhpMixed values render with PHP string semantics through {}. Also merge the
format!-wrapped and conditional-literal dynamic sites into single format!
calls. Genuinely runtime format strings (table styles, configurable error
messages, command synopsis, progress-bar modifiers, regex-built messages)
still go through sprintf.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/util')
| -rw-r--r-- | crates/shirabe/src/util/auth_helper.rs | 15 | ||||
| -rw-r--r-- | crates/shirabe/src/util/filesystem.rs | 14 | ||||
| -rw-r--r-- | crates/shirabe/src/util/http/curl_downloader.rs | 40 | ||||
| -rw-r--r-- | crates/shirabe/src/util/remote_filesystem.rs | 10 |
4 files changed, 36 insertions, 43 deletions
diff --git a/crates/shirabe/src/util/auth_helper.rs b/crates/shirabe/src/util/auth_helper.rs index 2373265..8505081 100644 --- a/crates/shirabe/src/util/auth_helper.rs +++ b/crates/shirabe/src/util/auth_helper.rs @@ -195,15 +195,12 @@ impl AuthHelper { message = format!( "{}\n", - sprintf( - &format!( - "GitHub API limit (%d calls/hr) is exhausted, could not fetch {}. {} You can also wait until %s for the rate limit to reset.", - url, message, - ), - &[ - rate_limit.get("limit").cloned().unwrap_or(PhpMixed::Null), - rate_limit.get("reset").cloned().unwrap_or(PhpMixed::Null), - ], + format!( + "GitHub API limit ({} calls/hr) is exhausted, could not fetch {}. {} You can also wait until {} for the rate limit to reset.", + rate_limit.get("limit").cloned().unwrap_or(PhpMixed::Null), + url, + message, + rate_limit.get("reset").cloned().unwrap_or(PhpMixed::Null), ), ); } else { diff --git a/crates/shirabe/src/util/filesystem.rs b/crates/shirabe/src/util/filesystem.rs index f54dfca..f693598 100644 --- a/crates/shirabe/src/util/filesystem.rs +++ b/crates/shirabe/src/util/filesystem.rs @@ -519,9 +519,10 @@ impl Filesystem { // Returning early-formatted Result is not possible without changing signature; panic to surface in tests. panic!( "{}", - sprintf( - "$from (%s) and $to (%s) must be absolute paths.", - &[from.to_string().into(), to.to_string().into()] + format!( + "$from ({}) and $to ({}) must be absolute paths.", + from.to_string(), + to.to_string() ) ); } @@ -583,9 +584,10 @@ impl Filesystem { if !self.is_absolute_path(from) || !self.is_absolute_path(to) { panic!( "{}", - sprintf( - "$from (%s) and $to (%s) must be absolute paths.", - &[from.to_string().into(), to.to_string().into()] + format!( + "$from ({}) and $to ({}) must be absolute paths.", + from.to_string(), + to.to_string() ) ); } diff --git a/crates/shirabe/src/util/http/curl_downloader.rs b/crates/shirabe/src/util/http/curl_downloader.rs index a0ef54f..f1056cc 100644 --- a/crates/shirabe/src/util/http/curl_downloader.rs +++ b/crates/shirabe/src/util/http/curl_downloader.rs @@ -1527,15 +1527,13 @@ impl CurlDownloader { &job, anyhow::anyhow!( TransportException::new( - sprintf( - "IP \"%s\" is blocked for \"%s\".", - &[ - primary_ip.clone(), - progress_now - .get("url") - .cloned() - .unwrap_or(PhpMixed::Null), - ], + format!( + "IP \"{}\" is blocked for \"{}\".", + primary_ip.clone(), + progress_now + .get("url") + .cloned() + .unwrap_or(PhpMixed::Null), ), 0, ) @@ -1611,19 +1609,17 @@ impl CurlDownloader { if !target_url.is_empty() { self.io.write_error3( - &sprintf( - "Following redirect (%u) %s", - &[ - PhpMixed::Int( - job.get("attributes") - .and_then(|v| v.as_array()) - .and_then(|a| a.get("redirects")) - .and_then(|b| b.as_int()) - .unwrap_or(0) - + 1, - ), - PhpMixed::String(Url::sanitize(target_url.clone())), - ], + &format!( + "Following redirect ({}) {}", + PhpMixed::Int( + job.get("attributes") + .and_then(|v| v.as_array()) + .and_then(|a| a.get("redirects")) + .and_then(|b| b.as_int()) + .unwrap_or(0) + + 1, + ), + PhpMixed::String(Url::sanitize(target_url.clone())), ), true, crate::io::DEBUG, diff --git a/crates/shirabe/src/util/remote_filesystem.rs b/crates/shirabe/src/util/remote_filesystem.rs index ff6f066..fc26775 100644 --- a/crates/shirabe/src/util/remote_filesystem.rs +++ b/crates/shirabe/src/util/remote_filesystem.rs @@ -981,12 +981,10 @@ impl RemoteFilesystem { self.io.write_error3("", true, crate::io::DEBUG); self.io.write_error3( - &sprintf( - "Following redirect (%u) %s", - &[ - PhpMixed::Int(self.redirects), - PhpMixed::String(Url::sanitize(target_url.clone())), - ], + &format!( + "Following redirect ({}) {}", + PhpMixed::Int(self.redirects), + PhpMixed::String(Url::sanitize(target_url.clone())), ), true, crate::io::DEBUG, |
