use std::path::PathBuf;
use anyhow::{Context, Result};
use clap::Args;
use crate::db::Database;
use crate::output::Format;
use crate::variant::comparison::VariantComparison;
#[derive(Args)]
pub struct CompareArgs {
pub file_a: PathBuf,
pub file_b: PathBuf,
#[arg(short, long, default_value = "human")]
pub format: Format,
#[arg(long)]
pub clinical: bool,
#[arg(long)]
pub kinship: bool,
#[arg(long)]
pub report: Option<PathBuf>,
}
impl CompareArgs {
pub async fn run(self) -> Result<()> {
let db = Database::open()
.context("Failed to open variant database. Run `genome db install` first.")?;
let comparison = VariantComparison::run(
&self.file_a,
&self.file_b,
&db,
self.kinship,
self.clinical,
)
.await?;
comparison.print(self.format)?;
Ok(())
}
}