mod compare;
mod filter;
mod merge_compact;
mod print;
mod verify;
use self::compare::CompareCommand;
use self::filter::FilterCommand;
use self::merge_compact::{CompactCommand, MergeCommand};
use self::print::PrintCommand;
use self::verify::VerifyCommand;
use anyhow::Context as _;
use clap::Subcommand;
#[derive(Debug, Clone, Subcommand)]
pub enum RrdCommands {
Compare(CompareCommand),
Print(PrintCommand),
Verify(VerifyCommand),
Compact(CompactCommand),
Merge(MergeCommand),
Filter(FilterCommand),
}
impl RrdCommands {
pub fn run(&self) -> anyhow::Result<()> {
match self {
Self::Compare(compare_command) => {
compare_command
.run()
.with_context(|| format!("current directory {:?}", std::env::current_dir()))
}
Self::Print(print_command) => print_command.run(),
Self::Verify(verify_command) => verify_command.run(),
Self::Compact(compact_command) => compact_command.run(),
Self::Merge(merge_command) => merge_command.run(),
Self::Filter(drop_command) => drop_command.run(),
}
}
}