1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use crate::*;
#[derive(Parser, Debug, Clone)]
pub struct ListOption {
    #[clap(flatten)]
    pub base: BaseOptions,
    #[clap(flatten)]
    pub filter: BaseFilterOptions,
}

#[derive(Args, Debug, Clone)]
pub struct BaseOptions {
    /// The base directory that all of your repositories are inside
    #[clap(
        short = 'd',
        long = "base-dir",
        env = "GIT_PROJECT_BASE_DIR",
        default_value_t =  String::from("."),
    )]
    pub base_dir: String,
    /// Do not stop recursing when a .git folder is found
    #[clap(short = 'r', long = "deep-recurse", default_value_t = true)]
    pub deep_recurse: bool,
}

#[derive(Args, Debug, Clone)]
pub struct BaseFilterOptions {
    #[clap( short = 'n', default_value_t = String::from(".git"))]
    pub name: String,
}

#[derive(clap::ValueEnum, Clone, Debug)]
pub enum FilterKind {
    File,
    Directory,
}
#[derive(clap::ValueEnum, Clone, Debug)]
pub enum FilterName {
    Git,
    Cargo,
    Pubspec,
}

pub fn run_list(opt: &ListOption) -> Result<()> {
    let ret = find_git(&opt);
    println!("{:#?}", ret);
    Ok(())
}