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}