1pub mod csv;
2pub mod jq;
3pub mod json;
4pub mod string;
5pub mod xml;
6pub mod yaml;
7
8extern crate serde_json;
9use std::io::{stdin, IsTerminal, StdinLock};
10use std::process::exit;
11
12#[repr(u8)]
14pub enum Error {
15 InputParsing = 1,
16 InputReading,
17 FileOpening,
18 FileReading,
19 JqCalling,
20 JqPiping,
21 JqWaiting,
22 OutputSerialization,
23 ArgumentParsing,
24 JaqCalling,
25 JaqPiping,
26 JaqWaiting,
27}
28
29pub fn stdin_reader() -> StdinLock<'static> {
30 let stdin = stdin();
31 if stdin.is_terminal() {
32 eprintln!("Error reading input: Did you forget to pipe something into us?");
33 exit(Error::InputReading as i32);
34 }
35 stdin.lock()
36}
37
38pub fn to_value<E>(input: &Result<serde_json::Value, E>) -> &serde_json::Value
39where
40 E: ToString,
41{
42 match input {
43 Ok(data) => data,
44 Err(e) => {
45 eprintln!("Error parsing input: {}", e.to_string());
47 exit(Error::InputParsing as i32);
48 }
49 }
50}