Verify bare unit commands through init PATH lookup and cargo run. Assisted-by: SurmAgent:unknown [read] [edit] [bash]
107 lines
4.2 KiB
Rust
107 lines
4.2 KiB
Rust
//! Dispatch the bundled uutils commands by argv[0], or as coreutils <command>.
|
|
fn main() {
|
|
let argv: Vec<_> = std::env::args_os().collect();
|
|
let invoked = std::path::Path::new(&argv[0]).file_stem().unwrap();
|
|
let second = invoked == "coreutils";
|
|
if second {
|
|
if argv.len() < 2 {
|
|
eprintln!("Usage: coreutils <utility> [arguments...]");
|
|
std::process::exit(2);
|
|
}
|
|
uucore::set_utility_is_second_arg();
|
|
}
|
|
let name = uucore::util_name();
|
|
let name = name.strip_suffix(".wasm").unwrap_or(name);
|
|
let locale = match name {
|
|
"dir" | "vdir" => "ls",
|
|
_ => name,
|
|
};
|
|
uucore::locale::setup_localization(locale).expect("utility supplies localization");
|
|
let args = uucore::args_os().skip(usize::from(second));
|
|
let code = match name {
|
|
"arch" => uu_arch::uumain(args),
|
|
"b2sum" => uu_b2sum::uumain(args),
|
|
"base32" => uu_base32::uumain(args),
|
|
"base64" => uu_base64::uumain(args),
|
|
"basename" => uu_basename::uumain(args),
|
|
"basenc" => uu_basenc::uumain(args),
|
|
"cat" => uu_cat::uumain(args),
|
|
"cksum" => uu_cksum::uumain(args),
|
|
"comm" => uu_comm::uumain(args),
|
|
"cp" => uu_cp::uumain(args),
|
|
"csplit" => uu_csplit::uumain(args),
|
|
"cut" => uu_cut::uumain(args),
|
|
"date" => uu_date::uumain(args),
|
|
"dd" => uu_dd::uumain(args),
|
|
"dir" => uu_dir::uumain(args),
|
|
"dircolors" => uu_dircolors::uumain(args),
|
|
"dirname" => uu_dirname::uumain(args),
|
|
"echo" => uu_echo::uumain(args),
|
|
"expand" => uu_expand::uumain(args),
|
|
"expr" => uu_expr::uumain(args),
|
|
"factor" => uu_factor::uumain(args),
|
|
"false" => uu_false::uumain(args),
|
|
"fmt" => uu_fmt::uumain(args),
|
|
"fold" => uu_fold::uumain(args),
|
|
"head" => uu_head::uumain(args),
|
|
"hostid" => uu_hostid::uumain(args),
|
|
"join" => uu_join::uumain(args),
|
|
"link" => uu_link::uumain(args),
|
|
"ln" => uu_ln::uumain(args),
|
|
"ls" => uu_ls::uumain(args),
|
|
"md5sum" => uu_md5sum::uumain(args),
|
|
"mkdir" => uu_mkdir::uumain(args),
|
|
"mktemp" => uu_mktemp::uumain(args),
|
|
"mv" => uu_mv::uumain(args),
|
|
"nice" => uu_nice::uumain(args),
|
|
"nl" => uu_nl::uumain(args),
|
|
"nproc" => uu_nproc::uumain(args),
|
|
"numfmt" => uu_numfmt::uumain(args),
|
|
"od" => uu_od::uumain(args),
|
|
"paste" => uu_paste::uumain(args),
|
|
"pathchk" => uu_pathchk::uumain(args),
|
|
"pr" => uu_pr::uumain(args),
|
|
"printenv" => uu_printenv::uumain(args),
|
|
"printf" => uu_printf::uumain(args),
|
|
"ptx" => uu_ptx::uumain(args),
|
|
"pwd" => uu_pwd::uumain(args),
|
|
"readlink" => uu_readlink::uumain(args),
|
|
"realpath" => uu_realpath::uumain(args),
|
|
"rm" => uu_rm::uumain(args),
|
|
"rmdir" => uu_rmdir::uumain(args),
|
|
"seq" => uu_seq::uumain(args),
|
|
"sha1sum" => uu_sha1sum::uumain(args),
|
|
"sha224sum" => uu_sha224sum::uumain(args),
|
|
"sha256sum" => uu_sha256sum::uumain(args),
|
|
"sha384sum" => uu_sha384sum::uumain(args),
|
|
"sha512sum" => uu_sha512sum::uumain(args),
|
|
"shred" => uu_shred::uumain(args),
|
|
"shuf" => uu_shuf::uumain(args),
|
|
"sleep" => uu_sleep::uumain(args),
|
|
"sort" => uu_sort::uumain(args),
|
|
"split" => uu_split::uumain(args),
|
|
"sum" => uu_sum::uumain(args),
|
|
"tail" => uu_tail::uumain(args),
|
|
"tee" => uu_tee::uumain(args),
|
|
"test" => uu_test::uumain(args),
|
|
"touch" => uu_touch::uumain(args),
|
|
"tr" => uu_tr::uumain(args),
|
|
"true" => uu_true::uumain(args),
|
|
"truncate" => uu_truncate::uumain(args),
|
|
"tsort" => uu_tsort::uumain(args),
|
|
"tty" => uu_tty::uumain(args),
|
|
"uname" => uu_uname::uumain(args),
|
|
"unexpand" => uu_unexpand::uumain(args),
|
|
"uniq" => uu_uniq::uumain(args),
|
|
"unlink" => uu_unlink::uumain(args),
|
|
"vdir" => uu_vdir::uumain(args),
|
|
"wc" => uu_wc::uumain(args),
|
|
"yes" => uu_yes::uumain(args),
|
|
_ => {
|
|
eprintln!("coreutils: unknown utility: {name}");
|
|
127
|
|
}
|
|
};
|
|
std::process::exit(code);
|
|
}
|