use clap::{Args, Parser, Subcommand, arg}; pub mod components; pub mod create; pub mod release; #[derive(Parser)] #[command( name = "emod-cli", version = "1.0.0", about = "Convenient Management of NetEase Minecraft Mod Project", allow_external_subcommands = true, long_about = None, propagate_version = true )] pub struct Cli { #[command(subcommand)] pub command: Commands, } #[derive(Subcommand)] pub enum Commands { /// Release a new version Release(ReleaseArgs), /// Create a new mod project Create(CreateArgs), /// Create a new component Components(ComponentsArgs), } #[derive(Args)] pub struct ReleaseArgs { /// The path of the project #[arg(short, long)] pub path: Option, /// The version of the project #[arg(short, long, conflicts_with = "pin")] pub ver: Option, /// Reuse the current version without auto-incrementing. /// Useful when retrying after a failed release that already wrote new version files. #[arg(short = 'P', long, conflicts_with = "ver")] pub pin: bool, } #[derive(Args)] pub struct CreateArgs { /// The name of the mod #[arg(short, long)] pub name: String, /// Example target, default example is 'default' #[arg(short, long)] pub target: Option, } #[derive(Args)] pub struct ComponentsArgs { /// The path of the project #[arg(short, long)] pub path: Option, /// The name of the component #[arg(short, long)] pub component: String, /// Import the path of the geo file. #[arg(short, long)] pub geo: Option, /// Import the path of the texture file. #[arg(short, long)] pub texture: Option, /// The item's identifier #[arg(short, long)] pub identifier: Option, }