From 2e3929027197e221366bce684b6200a8bc4e498d Mon Sep 17 00:00:00 2001 From: James Brown Date: Wed, 5 Nov 2025 13:43:04 -0800 Subject: [PATCH] svix-cli: allow reading JSON bodies from stdin --- svix-cli/src/json.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/svix-cli/src/json.rs b/svix-cli/src/json.rs index 533dd539f..d81e53991 100644 --- a/svix-cli/src/json.rs +++ b/svix-cli/src/json.rs @@ -1,6 +1,6 @@ -use std::str::FromStr; +use std::{io::Read, str::FromStr}; -use anyhow::{Error, Result}; +use anyhow::{Context, Error, Result}; use colored_json::{Color, ColorMode, ToColoredJson}; use serde::{de::DeserializeOwned, Serialize}; @@ -11,7 +11,16 @@ impl FromStr for JsonOf { type Err = Error; fn from_str(s: &str) -> Result { - Ok(JsonOf(serde_json::from_str(s)?)) + if s == "-" { + let mut stdin = std::io::stdin().lock(); + let mut input = String::new(); + stdin + .read_to_string(&mut input) + .context("Error reading stdin for '-' argument")?; + Ok(JsonOf(serde_json::from_str(&input)?)) + } else { + Ok(JsonOf(serde_json::from_str(s)?)) + } } }