faker-rust 0.1.0

A high-performance, locale-aware fake data generator for Rust
Documentation
//! CLI Demo Example
//! Demonstrates how to use faker_rust as a command line tool
//!
//! Run with: cargo run --bin faker-rust -- [COMMAND]
//!
//! Examples:
//!   cargo run --bin faker-rust -- name
//!   cargo run --bin faker-rust -- name --first
//!   cargo run --bin faker-rust -- email
//!   cargo run --bin faker-rust -- address --full
//!   cargo run --bin faker-rust -- company
//!   cargo run --bin faker-rust -- phone
//!   cargo run --bin faker-rust -- --seed 12345 name
//!   cargo run --bin faker-rust -- list

use std::process::Command;

fn main() {
    println!("=== Faker CLI Demo ===\n");

    // Run CLI commands and show output
    run_cli_command("name", &[]);
    run_cli_command("name", &["--first"]);
    run_cli_command("email", &[]);
    run_cli_command("address", &["--full"]);
    run_cli_command("company", &[]);
    run_cli_command("phone", &[]);
    run_cli_command("internet", &["--username"]);
    run_cli_command("games", &["--pokemon"]);
    run_cli_command("movies", &["--star-wars"]);
    run_cli_command("tv", &["--simpsons"]);

    println!("\n=== Seeded (Deterministic) Generation ===\n");
    println!("Running: faker-rust --seed 12345 name");
    for i in 0..3 {
        let output = Command::new("cargo")
            .args(["run", "--quiet", "--bin", "faker", "--", "--seed", "12345", "name"])
            .output()
            .expect("Failed to execute command");
        let result = String::from_utf8_lossy(&output.stdout);
        println!("  Run {}: {}", i + 1, result.trim());
    }
    println!("  (All runs produce the same output with same seed)");

    println!("\n=== Multiple Values ===\n");
    println!("Running: faker-rust -c 5 name");
    let output = Command::new("cargo")
        .args(["run", "--quiet", "--bin", "faker", "--", "-c", "5", "name"])
        .output()
        .expect("Failed to execute command");
    let result = String::from_utf8_lossy(&output.stdout);
    println!("{}", result);

    println!("\n=== Available Commands ===\n");
    let output = Command::new("cargo")
        .args(["run", "--quiet", "--bin", "faker", "--", "list"])
        .output()
        .expect("Failed to execute command");
    let result = String::from_utf8_lossy(&output.stdout);
    println!("{}", result);
}

fn run_cli_command(command: &str, args: &[&str]) {
    let mut cmd_args = vec!["run", "--quiet", "--bin", "faker", "--"];
    cmd_args.extend_from_slice(args);
    cmd_args.push(command);

    let output = Command::new("cargo")
        .args(&cmd_args)
        .output()
        .expect("Failed to execute command");

    let result = String::from_utf8_lossy(&output.stdout);
    let arg_str = if args.is_empty() {
        String::new()
    } else {
        format!(" {}", args.join(" "))
    };
    println!("$ faker{}{}", arg_str, command);
    println!("{}", result.trim());
    println!();
}