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
#![allow(clippy::nonminimal_bool)]

mod dotfile;
pub mod index;

use clap::{Parser, Subcommand};
pub use index::SlfIndex;
use std::path::PathBuf;

#[derive(Parser)]
#[command(author, version, about, long_about = None)]
pub struct SlfCLI {
    #[command(subcommand)]
    pub command: Option<SlfActions>,
}

#[derive(Subcommand)]
pub enum SlfActions {
    /// Track a new dotfile or multiple dotfile
    #[command(about = "Track a new dotfile or multiple dotfiles")]
    Track {
        /// Path to the dotfile
        path: PathBuf,
    },
    /// List tracked dotfile
    #[command(about = "List tracked dotfiles")]
    List,
    /// Remove a tracked dotfile
    #[command(about = "Remove a tracked dotfile")]
    Remove {
        /// Path to the dotfile to remove
        path: PathBuf,
    },
    /// Sync tracked dotfiles
    #[command(about = "Sync tracked dotfiles")]
    Sync,
}