woojin 0.1.3

Woojinlang interpreter written as Rust
Documentation
use std::{fs::File, io::Read};
use woojin::{
  error::{WoojinError, WoojinErrorKind},
};

fn main() {
  let args: Vec<String> = std::env::args().collect::<Vec<String>>();
  if args.len() < 2 {
    WoojinError::new(
      "Give Me File!\nUsage: woojin [file]",
      WoojinErrorKind::FileNotFound,
    )
    .exit();
  }
  let path: &String = &args[1];
  if !path.ends_with(".wj") {
    WoojinError::new(
      "I don't think it's woojin file(.wj)",
      WoojinErrorKind::UnsupportedExtension,
    )
    .exit();
  }
  let mut file: File = match File::open(path) {
    Ok(file) => file,
    Err(_) => WoojinError::new("File Not Found", WoojinErrorKind::FileNotFound).exit(),
  };
  let mut contents: String = String::new();
  if let Err(error) = file.read_to_string(&mut contents) {
    WoojinError::new(
      format!("File Read Error: {}", error),
      WoojinErrorKind::FailReadFailure,
    )
    .exit();
  }
  let lines: Vec<String> = contents
    .replace(";", "\n")
    .split("\n")
    .map(|line| line.trim().to_string())
    .filter(|line| !line.is_empty())
    .collect();
  woojin::run(lines);
}