use crate::output::OutputFormat;
use camino::Utf8PathBuf;
use clap::{Args, Subcommand};
#[derive(Args)]
pub struct QueryArgs {
#[arg(long)]
pub repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
pub scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
pub format: OutputFormat,
}
#[derive(Subcommand)]
pub enum SdkCommand {
CheckStatement {
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
Info {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
Plan {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
Apply {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
BeginVerification {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
CompleteVerification {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
VerificationRuns {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
scope: String,
#[arg(long)]
rule: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
Get {
#[command(flatten)]
query: QueryArgs,
},
Search {
#[command(flatten)]
query: QueryArgs,
},
Neighbors {
#[command(flatten)]
query: QueryArgs,
},
Trace {
#[command(flatten)]
query: QueryArgs,
},
Impact {
#[command(flatten)]
query: QueryArgs,
},
Evidence {
#[command(flatten)]
query: QueryArgs,
},
Stale {
#[command(flatten)]
query: QueryArgs,
},
ResolveSymbol {
#[command(flatten)]
query: QueryArgs,
},
VerificationBindings {
#[arg(long)]
repo: Option<Utf8PathBuf>,
#[arg(long, default_value = "default")]
scope: String,
#[arg(long)]
rule: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
format: OutputFormat,
},
}