1use clap::Parser;
2use std::path::PathBuf;
3
4#[derive(Parser)]
5#[command(name = "syncbox")]
6#[command(about = "Sync files between directories", long_about = None)]
7pub struct Args {
8 #[command(subcommand)]
10 pub command: Command,
11}
12
13#[derive(clap::Subcommand)]
14pub enum Command {
15 Sync {
16 source: PathBuf,
18 target: PathBuf,
20 #[arg(long)]
22 dry_run: bool,
23 #[arg(long)]
25 checksum: bool,
26 #[arg(long)]
28 delete: bool,
29 #[arg(long, value_name = "PATTERN")]
31 exclude: Vec<String>,
32 #[arg(long, value_name = "PATTERN", alias = "delete-ignore")]
34 delete_exclude: Vec<String>,
35 #[arg(long)]
37 detail: bool,
38 },
39 Run {
40 name: String,
42 #[arg(long, default_value = "syncbox.toml")]
44 config: PathBuf,
45 #[arg(long)]
47 dry_run: bool,
48 #[arg(long)]
50 checksum: bool,
51 #[arg(long)]
53 detail: bool,
54 },
55
56 Watch {
57 name: String,
59 #[arg(long, default_value = "syncbox.toml")]
61 config: PathBuf,
62 #[arg(long, default_value = "500")]
64 delay: u64,
65 #[arg(long)]
67 dry_run: bool,
68 #[arg(long)]
70 checksum: bool,
71 #[arg(long)]
73 detail: bool,
74 },
75}