use crate::arg_enums::TracingReceiver;
use clap::Args;
use pezsc_service::config::BasePath;
use std::path::PathBuf;
#[derive(Debug, Clone, Args)]
pub struct SharedParams {
#[arg(long, value_name = "CHAIN_SPEC")]
pub chain: Option<String>,
#[arg(long)]
pub dev: bool,
#[arg(long, short = 'd', value_name = "PATH")]
pub base_path: Option<PathBuf>,
#[arg(short = 'l', long, value_name = "LOG_PATTERN", num_args = 1..)]
pub log: Vec<String>,
#[arg(long)]
pub detailed_log_output: bool,
#[arg(long)]
pub disable_log_color: bool,
#[arg(long)]
pub enable_log_reloading: bool,
#[arg(long, value_name = "TARGETS")]
pub tracing_targets: Option<String>,
#[arg(long, value_name = "RECEIVER", value_enum, ignore_case = true, default_value_t = TracingReceiver::Log)]
pub tracing_receiver: TracingReceiver,
}
impl SharedParams {
pub fn base_path(&self) -> Result<Option<BasePath>, crate::Error> {
match &self.base_path {
Some(r) => Ok(Some(r.clone().into())),
None if self.is_dev() => Ok(Some(BasePath::new_temp_dir()?)),
None => Ok(None),
}
}
pub fn is_dev(&self) -> bool {
self.dev
}
pub fn chain_id(&self, is_dev: bool) -> String {
match self.chain {
Some(ref chain) => chain.clone(),
None if is_dev => "dev".into(),
_ => "".into(),
}
}
pub fn log_filters(&self) -> &[String] {
&self.log
}
pub fn detailed_log_output(&self) -> bool {
self.detailed_log_output
}
pub fn disable_log_color(&self) -> bool {
self.disable_log_color
}
pub fn enable_log_reloading(&self) -> bool {
self.enable_log_reloading
}
pub fn tracing_receiver(&self) -> pezsc_service::TracingReceiver {
self.tracing_receiver.into()
}
pub fn tracing_targets(&self) -> Option<String> {
self.tracing_targets.clone()
}
}