Files
xboct-deploy/src/cli.rs
T

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,
}