use clap::{Arg, ArgAction, Command};
use std::{ffi::OsString, io::Write};
use uucore::error::{set_exit_code, UResult};
use uucore::help_about;
const ABOUT: &str = help_about!("true.md");
#[uucore::main]
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
let mut command = uu_app();
let args: Vec<OsString> = args.collect();
if args.len() > 2 {
return Ok(());
}
if let Err(e) = command.try_get_matches_from_mut(args) {
let error = match e.kind() {
clap::error::ErrorKind::DisplayHelp => command.print_help(),
clap::error::ErrorKind::DisplayVersion => {
writeln!(std::io::stdout(), "{}", command.render_version())
}
_ => Ok(()),
};
if let Err(print_fail) = error {
let _ = writeln!(std::io::stderr(), "{}: {}", uucore::util_name(), print_fail);
set_exit_code(1);
}
}
Ok(())
}
pub fn uu_app() -> Command {
Command::new(uucore::util_name())
.version(clap::crate_version!())
.about(ABOUT)
.disable_help_flag(true)
.disable_version_flag(true)
.arg(
Arg::new("help")
.long("help")
.help("Print help information")
.action(ArgAction::Help),
)
.arg(
Arg::new("version")
.long("version")
.help("Print version information")
.action(ArgAction::Version),
)
}