use tc_service::config::BasePath;
use std::path::PathBuf;
use structopt::StructOpt;
use crate::arg_enums::TracingReceiver;
#[derive(Debug, StructOpt)]
pub struct SharedParams {
#[structopt(long, value_name = "CHAIN_SPEC")]
pub chain: Option<String>,
#[structopt(long, conflicts_with_all = &["chain"])]
pub dev: bool,
#[structopt(long, short = "d", value_name = "PATH", parse(from_os_str))]
pub base_path: Option<PathBuf>,
#[structopt(short = "l", long, value_name = "LOG_PATTERN")]
pub log: Vec<String>,
#[structopt(long)]
pub disable_log_color: bool,
#[structopt(long = "disable-log-reloading")]
pub disable_log_reloading: bool,
#[structopt(long = "tracing-targets", value_name = "TARGETS")]
pub tracing_targets: Option<String>,
#[structopt(
long = "tracing-receiver",
value_name = "RECEIVER",
possible_values = &TracingReceiver::variants(),
case_insensitive = true,
default_value = "Log"
)]
pub tracing_receiver: TracingReceiver,
}
impl SharedParams {
pub fn base_path(&self) -> Option<BasePath> {
self.base_path.clone().map(Into::into)
}
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()
} else {
"".into()
}
}
}
}
pub fn log_filters(&self) -> &[String] {
&self.log
}
pub fn disable_log_color(&self) -> bool {
self.disable_log_color
}
pub fn is_log_filter_reloading_disabled(&self) -> bool {
self.disable_log_reloading
}
pub fn tracing_receiver(&self) -> tc_service::TracingReceiver {
self.tracing_receiver.clone().into()
}
pub fn tracing_targets(&self) -> Option<String> {
self.tracing_targets.clone()
}
}