1use clap::{Parser, Subcommand};
2use std::path::PathBuf;
3
4#[derive(Parser)]
5#[command(
6 author,
7 version,
8 about = "文件处理工具集",
9 long_about = "一个用于文件复制和 JSON 处理的命令行工具"
10)]
11pub struct Cli {
12 #[command(subcommand)]
13 pub command: Commands,
14
15 #[arg(long = "ignore-dirs", global = true, value_delimiter = ' ')]
17 pub ignore_dirs: Option<Vec<String>>,
18}
19
20#[derive(Subcommand)]
21pub enum Commands {
22 Copy {
24 #[arg(short, long)]
26 from: PathBuf,
27
28 #[arg(short, long)]
30 to: PathBuf,
31
32 #[arg(long, default_value_t = false)]
34 skip_exist: bool,
35 },
36 ModifyJson {
38 #[arg(short, long)]
40 from: PathBuf,
41
42 #[arg(short, long)]
44 to: PathBuf,
45
46 #[arg(short = 'p', long)]
48 json_path: String,
49
50 #[arg(long, default_value_t = false)]
52 skip_exist: bool,
53 },
54}