use std::path::PathBuf; use clap::{ArgGroup, Parser}; /// Deploy hobby projects from a local PC to a VPS over SSH. #[derive(Debug, Parser)] #[command(name = "xboctploy", version, about)] #[command(arg_required_else_help = true)] #[command(group = ArgGroup::new("target").required(true).args(["project", "list", "list_servers", "pick", "this"]))] pub struct Cli { /// Project name from deploy.toml pub project: Option, /// Explicit path to the config file #[arg(long, value_name = "PATH")] pub config: Option, /// Print planned steps without executing anything #[arg(long)] pub dry_run: bool, /// List configured projects and exit #[arg(long)] pub list: bool, /// List configured servers and exit #[arg(long)] pub list_servers: bool, /// Interactively pick a project to deploy (fuzzy search) #[arg(long)] pub pick: bool, /// Deploy the project whose workdir matches the current folder (global config) #[arg(long)] pub this: bool, }