1#![feature(exit_status_error)]
16
17use std::process::Command;
18
19use color_eyre::eyre::eyre;
20use ytil_sys::cli::Args;
21
22fn main() -> color_eyre::Result<()> {
24 color_eyre::install()?;
25
26 let args = ytil_sys::cli::get();
27
28 if args.has_help() {
29 println!("{}", include_str!("../help.txt"));
30 return Ok(());
31 }
32
33 let path = args.first().ok_or_else(|| eyre!("missing path arg | args={args:#?}"))?;
34
35 let metadata = std::fs::metadata(path)?;
36
37 if metadata.is_dir() {
38 return Ok(Command::new("ls")
39 .args(["-llAtrh", "--color=always", path])
40 .status()?
41 .exit_ok()?);
42 }
43
44 if metadata.is_file() || metadata.is_symlink() {
45 return Ok(Command::new("cat").args([path]).status()?.exit_ok()?);
46 }
47
48 Ok(())
49}