gq_cli/args/
input_query.rs1use std::io::{BufReader, Read};
2
3use clap::Args;
4use clio::Input;
5
6#[derive(Debug, Args)]
7#[group(required = false, multiple = false)]
8pub struct InputQuery {
9 #[clap(value_parser, default_value = "{}")]
11 query: String,
12
13 #[clap(long = "file", short = 'f', value_parser)]
15 query_file: Option<Input>,
16}
17
18impl TryFrom<InputQuery> for String {
19 type Error = clio::Error;
20
21 fn try_from(input_query: InputQuery) -> Result<Self, Self::Error> {
22 match input_query.query_file {
23 None => Ok(input_query.query),
24 Some(query_file) => {
25 let mut buffer = BufReader::new(query_file);
26 let mut query = String::new();
27 buffer.read_to_string(&mut query)?;
28 Ok(query)
29 }
30 }
31 }
32}