Don't panic on broken pipe (e.g. npmctl list-hosts | head)
All checks were successful
release / build-release (push) Successful in 11m9s
All checks were successful
release / build-release (push) Successful in 11m9s
Reset SIGPIPE to SIG_DFL at startup so writing to a closed stdout terminates the process quietly like normal Unix tools, instead of panicking with "failed printing to stdout: Broken pipe". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011YPrEZVBpPVoCRyJz2exkZ
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -629,6 +629,7 @@ dependencies = [
|
||||
"chrono",
|
||||
"clap",
|
||||
"dirs",
|
||||
"libc",
|
||||
"reqwest",
|
||||
"rpassword",
|
||||
"serde",
|
||||
|
||||
@@ -21,6 +21,9 @@ dirs = "5"
|
||||
anyhow = "1"
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock", "std"] }
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
libc = "0.2"
|
||||
|
||||
[profile.release]
|
||||
strip = true
|
||||
opt-level = "z"
|
||||
|
||||
@@ -14,6 +14,14 @@ use client::NpmClient;
|
||||
use config::{resolve_base_url, Paths};
|
||||
|
||||
fn main() {
|
||||
// Bete oss som vanliga Unix-verktyg när stdout stängs tidigt (t.ex. `| head`):
|
||||
// återställ SIGPIPE till default så processen avslutas tyst i stället för att
|
||||
// panika på "Broken pipe" i println!.
|
||||
#[cfg(unix)]
|
||||
unsafe {
|
||||
libc::signal(libc::SIGPIPE, libc::SIG_DFL);
|
||||
}
|
||||
|
||||
// Egen parse-hantering: vid felaktig input skriver vi ut hjälpen
|
||||
// (utöver felmeddelandet), enligt önskemål. --help/--version skrivs ut normalt.
|
||||
let cli = match Cli::try_parse() {
|
||||
|
||||
Reference in New Issue
Block a user