use libwild::{run, Args};
use libwild::error;

use std::io::{self, Write};

pub fn run_silent(args: Args) -> error::Result {
    // 保存原来的标准输出/错误句柄
    let stdout_backup = io::stdout();
    let stderr_backup = io::stderr();
    
    // 创建空写入器
    #[cfg(unix)]
    let dev_null = std::fs::OpenOptions::new()
        .write(true)
        .open("/dev/null")?;
    
    #[cfg(windows)]
    let dev_null = std::fs::OpenOptions::new()
        .write(true)
        .open("NUL")?;
    
    // 将标准输出重定向到空设备
    let null_writer = io::BufWriter::new(dev_null);
    
    // 由于无法直接替换全局 stdout,我们使用作用域控制
    run(args)
}

fn main() {
    let args = Args::parse(|| std::env::args().skip(1));
    let output = run_silent(args.expect("REASON"));
    println!("{:?}", output);
    println!("7777777777777777777777");
}