use super::common::OutputFormat;
use clap::{Args, Subcommand};
use std::path::PathBuf;
#[derive(Args, Debug)]
pub struct TrustBasisArgs {
#[command(subcommand)]
pub cmd: TrustBasisSub,
}
#[derive(Subcommand, Debug)]
pub enum TrustBasisSub {
Generate(TrustBasisGenerateArgs),
Diff(TrustBasisDiffArgs),
Assert(TrustBasisAssertArgs),
}
#[derive(Args, Debug, Clone)]
pub struct TrustBasisGenerateArgs {
#[arg(value_name = "BUNDLE")]
pub bundle: PathBuf,
#[arg(long, short = 'o')]
pub out: Option<PathBuf>,
#[arg(long, value_delimiter = ',')]
pub pack: Option<Vec<String>>,
#[arg(long, default_value = "500")]
pub max_results: usize,
}
#[derive(Args, Debug, Clone)]
pub struct TrustBasisDiffArgs {
#[arg(value_name = "BASELINE")]
pub baseline: PathBuf,
#[arg(value_name = "CANDIDATE")]
pub candidate: PathBuf,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
pub format: OutputFormat,
#[arg(long)]
pub fail_on_regression: bool,
}
#[derive(Args, Debug, Clone)]
pub struct TrustBasisAssertArgs {
#[arg(long, short = 'i', value_name = "TRUST_BASIS")]
pub input: PathBuf,
#[arg(long = "require", value_name = "CLAIM=LEVEL", required = true)]
pub requirements: Vec<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
pub format: OutputFormat,
}