args: use PathBuf instead of string for file path
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
@@ -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!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
src/main.rs
12
src/main.rs
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user