fclipperr 0.1.0

copy anything to clipboard with rust
mod copy_handler;

use std::env;
use std::fs;
use std::process;

fn print_help() {
    println!("fclipperr: Universal Clipboard Utility");
    println!();
    println!("USAGE:");
    println!("    fclipperr <filename>");
    println!();
    println!("DESCRIPTION:");
    println!("    Copies the contents of the specified file to the clipboard.");
    println!("    Automatically detects local vs remote (SSH) environments and");
    println!("    uses the appropriate clipboard mechanism.");
    println!();
    println!("OPTIONS:");
    println!("    --help, -h    Display this help message");
    println!();
    println!("EXIT CODES:");
    println!("    0    Success (content copied)");
    println!("    1    Failure (file not found, permission denied, clipboard error)");
}

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() < 2 {
        eprintln!("Error: No filename provided");
        eprintln!();
        print_help();
        process::exit(1);
    }

    let arg = &args[1];

    if arg == "--help" || arg == "-h" {
        print_help();
        process::exit(0);
    }

    let filepath = arg;

    let content = match fs::read_to_string(filepath) {
        Ok(content) => content,
        Err(e) => {
            eprintln!("Error reading file '{}': {}", filepath, e);
            process::exit(1);
        }
    };

    let strategy = copy_handler::detect_environment();

    if let Err(e) = copy_handler::copy_content(&content, strategy) {
        eprintln!("Error copying to clipboard: {}", e);
        process::exit(1);
    }

    process::exit(0);
}