aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-04-16 16:56:10 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-04-16 16:56:10 +0200
commit48ea90800c3aa6055247fe2c56bc8e9d63024bd3 (patch)
treeba1b23c685c5e894f88752a1f5e55a3def9582c7 /src
parent0e3bcda2ce1ba4bff5d457e48a82db6e6289aad6 (diff)
Handle layout error better
Diffstat (limited to 'src')
-rw-r--r--src/file_handler/mod.rs6
-rw-r--r--src/main.rs9
2 files changed, 11 insertions, 4 deletions
diff --git a/src/file_handler/mod.rs b/src/file_handler/mod.rs
index a106c27..4932ef1 100644
--- a/src/file_handler/mod.rs
+++ b/src/file_handler/mod.rs
@@ -35,18 +35,18 @@ impl FileHandler {
FileType::Unknown
}
- pub fn get_layout_or_panic(&mut self, files: &Vec<File>) {
+ pub fn get_layout_or_panic(&mut self, files: &Vec<File>) -> Result<(), &str> {
for file in files {
match file.file_type {
FileType::Layout => {
let layout_text = read_to_string(&file.path).unwrap();
self.layout = Some(layout_text);
- return;
+ return Ok(());
},
_ => {}
}
}
- panic!("No layout found. Please ensure there's a _layout.html file at the root");
+ Err("No layout found. Please ensure there's a _layout.html file at the root")
}
pub fn handle_all(&self, source: &PathBuf, destination: &PathBuf, files: &Vec<File>) {
diff --git a/src/main.rs b/src/main.rs
index fdfe863..c6de435 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,6 +3,7 @@ mod file_finder;
mod file_handler;
use std::io::Result;
+use std::process::exit;
use std::env::current_dir;
use std::fs::{create_dir_all, remove_dir_all};
@@ -27,7 +28,13 @@ fn main() -> Result<()> {
// Step 3. Load the layout
let mut file_handler = FileHandler::default();
- file_handler.get_layout_or_panic(&files);
+ match file_handler.get_layout_or_panic(&files) {
+ Ok(_) => {},
+ Err(error) => {
+ eprintln!("{}", error);
+ exit(1);
+ }
+ }
// Step 4. Process all files
file_handler.handle_all(&source, &destination, &files);