use clap::{Args, ValueEnum};
use crate::cli::SharedScopeArgs;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
pub enum CliDirection {
Outgoing,
Backlinks,
Both,
}
impl From<CliDirection> for talon_core::Direction {
fn from(dir: CliDirection) -> Self {
match dir {
CliDirection::Outgoing => Self::Outgoing,
CliDirection::Backlinks => Self::Backlinks,
CliDirection::Both => Self::Both,
}
}
}
#[derive(Debug, Clone, Args)]
#[command(about = "Find related notes via wikilink traversal.")]
pub struct RelatedArgs {
pub path: String,
#[arg(long)]
pub depth: Option<u8>,
#[arg(long, value_enum, ignore_case = true)]
pub direction: Option<CliDirection>,
#[command(flatten)]
pub scope: SharedScopeArgs,
}