#![cfg(feature = "extensions")]
use crate::ext::errors::ExtensionError;
pub(crate) fn read_input(path_or_dash: &str) -> std::io::Result<String> {
use std::io::Read;
if path_or_dash == "-" {
let mut buf = String::new();
std::io::stdin().read_to_string(&mut buf)?;
Ok(buf)
} else {
std::fs::read_to_string(path_or_dash)
}
}
pub(crate) fn fail_json(json: bool, code: &str, message: &str) -> anyhow::Error {
if json {
let line = serde_json::json!({
"status": "error",
"code": code,
"message": message,
});
println!("{line}");
}
anyhow::anyhow!("{code}: {message}")
}
pub(crate) fn extension_error_code(err: &ExtensionError) -> &'static str {
use ExtensionError::*;
match err {
NotFound(_) => "extension-not-found",
RecipeNotFound { .. } => "recipe-not-found",
InvalidConfig(_) => "invalid-config",
InvalidDescriptor(_) => "invalid-descriptor",
Conflict(_) => "conflict",
ModeBNotImplemented => "mode-b-not-implemented",
Io(_) => "io-error",
Json(_) => "invalid-json",
}
}