transfer_family_cli 0.4.0

TUI to browse and transfer files via AWS Transfer Family connector
Documentation
//! Binary entry point for the Transfer Family Connector TUI CLI.

use clap::Parser;
use std::path::PathBuf;
use std::process;
use transfer_family_cli::{Config, run};

#[tokio::main]
#[allow(clippy::print_stderr)] // CLI error output to stderr is intentional
async fn main() {
    let args = Args::parse();
    let config = Config::new(
        args.connector_id,
        args.s3_root,
        args.region,
        args.profile,
        args.download_dir,
    );
    if let Err(e) = run(config).await {
        eprintln!("{e}");
        process::exit(if e.is_retryable() { 2 } else { 1 });
    }
}

#[derive(clap::Parser, Debug)]
#[command(
    name = "transfer-family-cli",
    about = "Browse remote SFTP via AWS Transfer Family connector"
)]
struct Args {
    #[arg(long, env = "TRANSFER_CONNECTOR_ID")]
    connector_id: String,

    /// S3 location for transfer CLI data, format bucket/prefix (e.g. my-bucket/transfer-cli/)
    #[arg(long, env = "TRANSFER_S3_ROOT")]
    s3_root: String,

    #[arg(long, env = "AWS_REGION")]
    region: Option<String>,

    #[arg(long, env = "AWS_PROFILE")]
    profile: Option<String>,

    #[arg(long, default_value = ".", env = "TRANSFER_DOWNLOAD_DIR")]
    download_dir: PathBuf,
}