diff --git a/Cargo.toml b/Cargo.toml index c04f270..6185f56 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nyf" -version = "0.3.0" +version = "0.3.1" authors = ["glyph "] edition = "2018" description = "html splicer and rss generator" diff --git a/src/main.rs b/src/main.rs index 05ed499..20e58ef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,14 +21,14 @@ //! element are spliced into the `[[ title ]]` tag of the base HTML template for each //! sub-directory template. //! -use std::{error, fs, io, path::Path}; +use std::{fs, io, path::Path}; // define the path for the template directory const TEMPLATE_DIR: &str = "./templates"; // define the path for the generated site output const SITE_DIR: &str = "./site"; -fn main() -> Result<(), Box> { +fn main() { // read the base html template to a string let base = format!("{}/base.html", TEMPLATE_DIR); let base_path = Path::new(&base); @@ -57,25 +57,31 @@ fn main() -> Result<(), Box> { .expect("failed to write the root index.html file"); // walk the template directory and collect paths for all files and sub-directories - let template_files = fs::read_dir(TEMPLATE_DIR)? + let template_files: Vec<_> = fs::read_dir(TEMPLATE_DIR) + .expect("failed to read template directory") .map(|res| res.map(|e| e.path())) - .collect::, io::Error>>()?; + .collect::, io::Error>>() + .expect("failed to collect template file paths"); // loop through each file and sub-directory for entry in template_files { if entry.is_dir() { // replicate templates sub-directory structure in site output directory - let template_sub_dir_suffix = entry.strip_prefix(TEMPLATE_DIR)?; + let template_sub_dir_suffix = entry + .strip_prefix(TEMPLATE_DIR) + .expect("failed to strip prefix from template directory path"); let site_sub_dir = Path::new(SITE_DIR).join(template_sub_dir_suffix); // create the sub-directory if it doesn't already exist if !site_sub_dir.is_dir() { - fs::create_dir(site_sub_dir)?; + fs::create_dir(site_sub_dir).expect("failed to create a site output sub-directory"); } // read each file from the sub-diretory - for file in fs::read_dir(entry)? { - let file = file?; + for file in fs::read_dir(entry).expect("failed to read file in template sub-directory") + { + let file = file.unwrap(); let file_path = file.path(); - let file_html = fs::read_to_string(&file_path)?; + let file_html = fs::read_to_string(&file_path) + .expect("failed to read template html file to string"); // find the index of the h2 tag (represents the page title) let mut title_start = file_html.find("

").expect("

tag not found"); // increment the index to represent the start of the title text @@ -93,10 +99,9 @@ fn main() -> Result<(), Box> { // replace the template directory path with the site output path let output_path = file_output_path.replace(TEMPLATE_DIR, SITE_DIR); // trim whitespace from the end of the generated html and write to file - fs::write(output_path, file_output.trim())? + fs::write(output_path, file_output.trim()) + .expect("failed to write html file to site directory") } } } - - Ok(()) }