32 lines
1.0 KiB
Rust
32 lines
1.0 KiB
Rust
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<String>,
|
|
/// Explicit path to the config file
|
|
#[arg(long, value_name = "PATH")]
|
|
pub config: Option<PathBuf>,
|
|
/// 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,
|
|
}
|