use std::path::{Path, PathBuf};
use clap::Args;
use crate::cli::{DEFAULT_ENVIRONMENT, ICP_ENVIRONMENT_ENV};
#[derive(Args, Debug)]
pub(crate) struct DiagnosticArgs {
#[arg(value_name = "CODE")]
code: String,
#[arg(long = "fact", value_name = "TAG=VALUE")]
facts: Vec<String>,
#[arg(long, value_name = "PATH")]
artifact: Option<PathBuf>,
#[arg(long, value_name = "CANISTER")]
canister: Option<String>,
#[arg(short, long, env = ICP_ENVIRONMENT_ENV, value_name = "ENV")]
environment: Option<String>,
}
impl DiagnosticArgs {
pub(crate) fn code(&self) -> &str {
&self.code
}
pub(crate) const fn facts(&self) -> &[String] {
self.facts.as_slice()
}
pub(crate) fn artifact(&self) -> Option<&Path> {
self.artifact.as_deref()
}
pub(crate) fn canister_name(&self) -> Option<&str> {
self.canister.as_deref()
}
pub(crate) fn environment(&self) -> &str {
self.environment.as_deref().unwrap_or(DEFAULT_ENVIRONMENT)
}
}