#![allow(unused)]
use crate::Execute;
use alloc::{string::String, vec::Vec};
use bon::Builder;
const HELP_OUTPUT: &str = r#"The output format."#;
const HELP_JQ: &str = r#"Filter JSON output using a jq expression.
For example, "select(.name)"."#;
pub trait Fetcher<T>: Execute<T> {}
#[derive(Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd, Builder)]
#[builder(derive(Debug), on(String, into))]
#[cfg_attr(feature = "clap", derive(clap::Args))]
#[cfg_attr(feature = "clap", command(about = None, long_about = None))]
pub struct FetcherOptions {
#[builder(field)]
#[cfg_attr(feature = "clap", clap(skip))]
pub other: Vec<String>,
#[cfg_attr(
feature = "clap",
clap(
value_name = "FORMAT",
short = 'o',
long,
help = HELP_OUTPUT,
long_help = HELP_OUTPUT
)
)]
pub output: Option<String>,
#[cfg_attr(
feature = "clap",
clap(
long,
value_name = "EXPR",
help = "Filter JSON output using a jq expression",
long_help = HELP_JQ
)
)]
pub jq: Option<String>,
}
impl<S: fetcher_options_builder::State> FetcherOptionsBuilder<S> {
pub fn other(mut self, flag: impl Into<String>) -> Self {
self.other.push(flag.into());
self
}
pub fn maybe_other(mut self, flag: Option<impl Into<String>>) -> Self {
if let Some(flag) = flag {
self.other.push(flag.into());
}
self
}
}