use clap::{Parser, Subcommand};
use commands::{
cli::CliCommands, gitignore::GitIgnoreCommands, readme::ReadmeCommands, store::StoreCommands,
};
use crate::{commands, config, style::LogMessage};
#[derive(Parser)]
#[command(author, version, about ="Compilation of utility scripts for everyday use", long_about = None)]
#[command(propagate_version = true)]
pub struct Utils {
#[command(subcommand)]
pub command: Commands,
}
impl Utils {
pub async fn run() {
let utils = Utils::parse();
match utils.command {
Commands::Ignore(git_ignore) => git_ignore.parse(),
Commands::Readme(readme) => readme.parse(),
Commands::Store(store) => store.parse().await.unwrap(),
Commands::Upgrade => CliCommands::upgrade().await.unwrap(),
Commands::Uninstall => CliCommands::uninstall().await.unwrap(),
Commands::Sync => CliCommands::sync().await,
Commands::Config => {
let config_path = config::Config::path().ok();
if config_path.is_some() {
LogMessage::neutral(&format!(
"Modify the config file available at {}",
config_path.unwrap()
));
}
}
}
}
}
#[derive(Subcommand)]
pub enum Commands {
Store(StoreCommands),
Ignore(GitIgnoreCommands),
Readme(ReadmeCommands),
Upgrade,
Uninstall,
Sync,
Config,
}