diff --git a/crates/docs/src/lib.rs b/crates/docs/src/lib.rs index f659d7a46e..568ab261a7 100644 --- a/crates/docs/src/lib.rs +++ b/crates/docs/src/lib.rs @@ -110,7 +110,7 @@ pub fn generate_docs_html(root_file: PathBuf) { .docs_by_module .iter() .map(|(_, module)| { - let href = sidebar_link_url(module.name.as_str()); + let href = module_link_url(module.name.as_str()); format!(r#""#) }) @@ -133,7 +133,31 @@ pub fn generate_docs_html(root_file: PathBuf) { set }; - // Write each package's module docs html file + // Write index.html for package (/index.html) + { + let rendered_package = template_html + .replace( + "", + page_title(package_name.as_str(), "").as_str(), + ) + .replace( + "", + render_name_and_version(package_name.as_str(), version.as_str()).as_str(), + ) + .replace( + "", + render_package_index(&loaded_module).as_str(), + ); + + fs::write(build_dir.join("index.html"), rendered_package).unwrap_or_else(|error| { + panic!( + "Attempted to write index.html but failed with this error: {}", + error + ) + }); + } + + // Write each package module's index.html file for module_docs in loaded_module.docs_by_module.values() { let module_name = module_docs.name.as_str(); let module_dir = build_dir.join(module_name.replace('.', "/").as_str()); @@ -163,7 +187,7 @@ pub fn generate_docs_html(root_file: PathBuf) { println!("🎉 Docs generated in {}", build_dir.display()); } -fn sidebar_link_url(module_name: &str) -> String { +fn module_link_url(module_name: &str) -> String { format!("{}{}", base_url(), module_name) } @@ -171,6 +195,39 @@ fn page_title(package_name: &str, module_name: &str) -> String { format!("