rusht 1.3.0

Shell commands written in Rust
Documentation
use crate::common::{StdWriter, StdinReader, VecReader};
use crate::ExitStatus;
use log::debug;

use super::namesafe;
use super::NamesafeArgs;

pub async fn handle_namesafe(args: NamesafeArgs) -> ExitStatus {
    let res = match args.input.clone() {
        Some(inp) => {
            assert!(!args.allow_empty);
            assert!(!args.single_line);
            debug!("namesafe getting input from provided string, ignoring stdin");
            namesafe(
                args,
                &mut VecReader::new(vec![inp]),
                &mut StdWriter::stdout(),
            )
            .await
        }
        None => {
            debug!(
                "namesafe getting input from stdin; allow_empty={}, single_line={}",
                args.allow_empty, args.single_line
            );
            namesafe(args, &mut StdinReader::new(), &mut StdWriter::stdout()).await
        }
    };
    match res {
        Ok(()) => ExitStatus::ok(),
        Err(err) => {
            eprintln!("{}", err);
            ExitStatus::err()
        }
    }
}