use anyhow::anyhow;
use clap::Parser;
use std::path::PathBuf;
#[derive(Debug, Clone, Parser)]
#[command(version, about, long_about = None)]
pub(crate) struct Config {
#[arg(short = 'p', long, default_value_t = 3000)]
pub(crate) port: u16,
#[arg(long, default_value_t = 9090)]
pub(crate) metrics_port: u16,
#[arg(short = 'm', long, default_value_t = true)]
pub(crate) metrics: bool,
#[arg(short = 'f', long)]
pub(crate) targets: PathBuf,
#[arg(short = 'w', long, default_value_t = true)]
pub(crate) watch: bool,
#[arg(long, default_value = "onwards")]
pub(crate) metrics_prefix: String,
}
impl Config {
pub(crate) fn validate(self) -> Result<Self, anyhow::Error> {
if !self.targets.exists() {
return Err(anyhow!(
"Config file '{}' does not exist",
self.targets.display()
));
}
Ok(self)
}
}