main.rs 850 B

1234567891011121314151617181920212223242526272829303132
  1. extern crate exa;
  2. use exa::Exa;
  3. use std::env::args;
  4. use std::io::{stdout, stderr, Write, ErrorKind};
  5. use std::process::exit;
  6. fn main() {
  7. let args: Vec<String> = args().skip(1).collect();
  8. let mut stdout = stdout();
  9. match Exa::new(&args, &mut stdout) {
  10. Ok(mut exa) => {
  11. match exa.run() {
  12. Ok(exit_status) => exit(exit_status),
  13. Err(e) => {
  14. match e.kind() {
  15. ErrorKind::BrokenPipe => exit(0),
  16. _ => {
  17. writeln!(stderr(), "{}", e).unwrap();
  18. exit(1);
  19. },
  20. };
  21. }
  22. };
  23. },
  24. Err(e) => {
  25. writeln!(stderr(), "{}", e).unwrap();
  26. exit(e.error_code());
  27. },
  28. };
  29. }