use super::Run;
use crate::io::JsonWrite;
use clap::Args;
use clio::Output;
use itertools::Itertools;
#[derive(Debug, Args)]
pub struct Capture {
#[clap(long, short, action, default_value_t = false)]
queue: bool,
#[clap(long, short = 's', action, default_value_t = false)]
history: bool,
#[clap(long, short, action, default_value_t = true)]
all: bool,
#[clap(long, short, default_value = "-")]
output: Output,
#[clap(long, action, default_value_t = false)]
pretty: bool,
}
impl Run for Capture {
async fn run(mut self, client: cmfy::Client) -> cmfy::Result<()> {
if self.queue || self.history {
self.all = false;
}
if self.all {
self.queue = true;
self.history = true;
}
let prompts = client
.collect_prompt_batch(self.history, self.queue)
.await?
.into_iter()
.map(|entries| entries.inner.nodes)
.collect_vec();
self.output.write_json(&prompts, self.pretty)?;
Ok(())
}
}