main.rs 973 B

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