md_prune_image/
cli.rs

1use clap::Parser;
2use std::path::PathBuf;
3
4#[derive(Parser, Debug)]
5#[command(name = "md-prune-image")]
6#[command(about = "Remove orphaned image files from markdown directories", long_about = None)]
7#[command(styles = clap_cargo::style::CLAP_STYLING)]
8pub struct Cli {
9    #[arg(value_name = "DIRECTORY")]
10    pub directory: PathBuf,
11
12    #[arg(long, group = "action")]
13    pub recycle: bool,
14
15    #[arg(long, group = "action")]
16    pub delete: bool,
17
18    #[arg(long, group = "action", value_name = "DIR")]
19    pub r#move: Option<PathBuf>,
20
21    #[arg(long, default_value = "jpg,jpeg,png,gif,bmp,svg,webp")]
22    pub extensions: String,
23}
24
25#[derive(Debug, Clone)]
26pub enum Action {
27    Delete,
28    Recycle,
29    Move(PathBuf),
30}
31
32impl Cli {
33    pub fn action(&self) -> Action {
34        if self.delete {
35            Action::Delete
36        } else if let Some(ref dir) = self.r#move {
37            Action::Move(dir.clone())
38        } else {
39            Action::Recycle
40        }
41    }
42}