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

View File

@@ -27,8 +27,14 @@ fn main() {
args.handle(); args.handle();
let file = args.get_file(); 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); let mut parser = Parser::new(&content);
let Some(parent) = parser.parse() else {
println!("{:?}", parser.parse()); eprintln!(
"Failed to parse {} - See the errors above",
file.to_string_lossy()
);
std::process::exit(1);
};
println!("Parsed AST:\n{:#?}", parent);
} }