args: use PathBuf instead of string for file path

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2023-08-13 07:32:55 +05:30
parent d70b196042
commit 1a2563f756
2 changed files with 13 additions and 6 deletions

View File

@@ -1,4 +1,5 @@
use std::env;
use std::path::PathBuf;
use std::process::exit;
const VERSION: &str = env!("CARGO_PKG_VERSION");
@@ -8,7 +9,7 @@ const CRATE: &str = env!("CARGO_CRATE_NAME");
#[derive(Default)]
pub struct Args {
version: bool,
file: Option<String>,
file: Option<PathBuf>,
}
impl Args {
@@ -34,7 +35,7 @@ impl Args {
if self.file.is_some() {
panic!("please specify only a single source file!");
}
self.file = Some(file.to_owned());
self.file = Some(PathBuf::from(file));
}
}
}
@@ -55,7 +56,7 @@ impl Args {
/// Fetches the file from the arguments.
/// Panics if there is no file in the arguments
#[inline]
pub fn get_file(self) -> String {
pub fn get_file(self) -> PathBuf {
self.file.expect("no file supplied!")
}
}

View File

@@ -27,8 +27,14 @@ fn main() {
args.handle();
let file = args.get_file();
let content = fs::read_to_string(file).expect("Couldn't read the file");
let content = fs::read_to_string(&file).expect("Couldn't read the file");
let mut parser = Parser::new(&content);
println!("{:?}", parser.parse());
let Some(parent) = parser.parse() else {
eprintln!(
"Failed to parse {} - See the errors above",
file.to_string_lossy()
);
std::process::exit(1);
};
println!("Parsed AST:\n{:#?}", parent);
}