use clap::{Args, Parser, Subcommand};
#[derive(Debug, Parser)]
#[clap(author, version, about)]
pub struct ClapperArgs {
#[clap(subcommand)]
pub entity_type: EntityType,
}
#[derive(Debug, Subcommand)]
pub enum EntityType {
Get(GetCommand),
Scaffold(ScaffoldCommand),
Install(InstallCommand),
}
#[derive(Debug, Args)]
pub struct GetCommand{
#[clap(subcommand)]
pub command: GetSubCommand,
}
#[derive(Debug, Subcommand)]
pub enum GetSubCommand {
Dhjs(GetDir),
Dhts(GetDir),
Dfd(GetDir),
Nestjs(GetDir)
}
#[derive(Debug, Args)]
pub struct ScaffoldCommand{
#[clap(subcommand)]
pub command: ScaffoldSubCommand,
}
#[derive(Debug, Subcommand)]
pub enum ScaffoldSubCommand {
Reactjs(GetDir),
Reactts(GetDir),
Hardhat(GetDir),
Nestjs(GetDir),
Laravel(GetDir),
Nextjs(GetDir),
Foundry(GetDir),
Vue(GetDir),
Vite(GetDir),
Noir(GetDir),
Snforge(GetDir),
}
#[derive(Debug, Args)]
pub struct InstallCommand{
#[clap(subcommand)]
pub command: InstallSubCommand,
}
#[derive(Debug, Subcommand)]
pub enum InstallSubCommand {
Brew,
Choco,
Node,
Scarb,
Forge,
Starkli,
Noir,
Snfoundry(Version),
}
#[derive(Debug, Args)]
pub struct GetDir {
pub dir_name: String
}
#[derive(Debug, Args)]
pub struct Version {
pub version_name: String
}