shine-cli 1.1.1

Cross-platform CLI for managed shell commands, app configs, and machine setup
Documentation
use clap::{Args, Subcommand};

#[derive(Subcommand, Debug)]
pub enum LocalCommands {
    /// Download a file from the remote host to the local machine
    Download(LocalTransferCommand),
    /// Upload a file from the local machine to the remote host
    Upload(LocalTransferCommand),
    /// Show the current session's local directory, connection status, and protocol version
    Status,
}

#[derive(Args, Debug)]
pub struct LocalTransferCommand {
    /// Source path, resolved by whichever side owns it (remote for
    /// download, local for upload)
    pub source: String,
    /// Destination path, resolved by the other side; defaults to the same
    /// file name in that side's default directory
    pub destination: Option<String>,
    /// Overwrite an existing destination
    #[arg(long)]
    pub force: bool,
    /// Show what would happen without transferring any data
    #[arg(long)]
    pub dry_run: bool,
    /// Use scp instead of the default rsync
    #[arg(long)]
    pub scp: bool,
}