#[derive(Debug, Default, clap::Args)]
pub struct ToolCheckArgs {
#[arg(conflicts_with = "eval")]
pub selector: Option<artifactize_core::types::EvalId>,
#[arg(long, value_name = "ID")]
pub eval: Option<artifactize_core::types::EvalId>,
#[arg(long, value_name = "ID")]
pub artifact: Option<artifactize_core::types::ArtifactName>,
#[arg(long, value_enum)]
pub audience: Option<artifactize_core::diagnostics::Audience>,
#[arg(long, value_name = "NAME")]
pub tool: Option<artifactize_core::config::ToolName>,
#[arg(long)]
pub execute: bool,
#[arg(long, value_name = "JSON", value_parser = json_arguments)]
pub args: Option<serde_json::Value>,
}
impl From<ToolCheckArgs> for artifactize_core::diagnostics::ToolCheckOptions {
fn from(args: ToolCheckArgs) -> Self {
Self {
selector: args.selector,
eval: args.eval,
artifact: args.artifact,
audience: args.audience,
tool: args.tool,
execute: args.execute,
args: args.args,
}
}
}
fn json_arguments(text: &str) -> Result<serde_json::Value, String> {
serde_json::from_str(text).map_err(|e| format!("Invalid --args JSON: {e}"))
}