git_explore/cmd/
list.rs

1use crate::*;
2#[derive(Parser, Debug, Clone)]
3pub struct ListOption {
4    #[clap(flatten)]
5    pub base: BaseOptions,
6    #[clap(flatten)]
7    pub filter: BaseFilterOptions,
8}
9
10#[derive(Args, Debug, Clone)]
11pub struct BaseOptions {
12    /// The base directory that all of your repositories are inside
13    #[clap(
14        short = 'd',
15        long = "base-dir",
16        env = "GIT_PROJECT_BASE_DIR",
17        default_value_t =  String::from("."),
18    )]
19    pub base_dir: String,
20    /// Do not stop recursing when a .git folder is found
21    #[clap(short = 'r', long = "deep-recurse", default_value_t = true)]
22    pub deep_recurse: bool,
23}
24
25#[derive(Args, Debug, Clone)]
26pub struct BaseFilterOptions {
27    #[clap( short = 'n', default_value_t = String::from(".git"))]
28    pub name: String,
29}
30
31#[derive(clap::ValueEnum, Clone, Debug)]
32pub enum FilterKind {
33    File,
34    Directory,
35}
36#[derive(clap::ValueEnum, Clone, Debug)]
37pub enum FilterName {
38    Git,
39    Cargo,
40    Pubspec,
41}
42
43pub fn run_list(opt: &ListOption) -> Result<()> {
44    let ret = find_git(opt);
45    println!("{:#?}", ret);
46    Ok(())
47}