vphone-cli: Show fw prepare output during vm create

The fw prepare step sent the script's entire stdout/stderr to
/dev/null unless -v was passed, so the aria2c/curl/wget progress bar
was discarded with it. That left the longest phase of the pipeline —
a multi-GB IPSW download — printing nothing for minutes, which reads
as a hang.

Stream it unconditionally. Standalone `fw prepare` already does this
by flooring its verbosity at .info; this brings `vm create` in line.
The script itself is status-line based (~40 echoes, unzip -oq, no
per-file loops), so this adds progress rather than noise.

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
zqxwce
2026-08-05 17:01:19 +03:00
committed by zqxwce
co-authored by Claude Fable 5
parent d405b12d64
commit 8de3c1c5c2
@@ -317,9 +317,10 @@ public struct VPhoneCreateOrchestrator {
if options.keepArtifacts { env["VPHONE_KEEP_ARTIFACTS"] = "1" }
trace("spawn /bin/bash \(resources.fwPrepareScript.path) (env keys: VPHONE_PYTHON, IPSW_DIR, VPHONE_SEAL_DIR)", v)
// Always streamed silence during a multi-GB download reads as a hang.
let code = try VPhoneProcessRunner.runStreaming(
URL(fileURLWithPath: "/bin/bash"), [resources.fwPrepareScript.path], cwd: bundleURL, env: env,
echo: v.showsToolDetail)
echo: true)
guard code == 0 else { throw VPhoneCreateError.fwPrepareFailed(code) }
print("[+] Firmware prepared (iPhone + cloudOS merged into bundle).")
}