use super::Run;
use crate::io::{Input, JsonRead};
use clap::Args;
use cmfy::{dto, nodes::KSampler};
use colored::Colorize;
#[derive(Debug, Args)]
pub struct Submit {
#[clap(default_value = "-")]
input: Input,
#[clap(long, short, action, default_value_t = false)]
reseed: bool,
#[clap(long, short = 'n', action, default_value_t = 1)]
count: usize,
}
impl Run for Submit {
async fn run(mut self, client: cmfy::Client) -> cmfy::Result<()> {
let prompts: Vec<dto::PromptNodes> = self.input.read_json()?;
for mut prompt in prompts {
for _ in 0..self.count {
if self.reseed {
prompt.reseed()?;
}
let response = client.submit(&prompt).await?;
let index = format!("[{}]", response.number.to_string().bright_blue());
println!("{:<15}{}", index, response.prompt_id);
}
}
Ok(())
}
}