diff --git a/demo/Cargo.lock b/demo/Cargo.lock index 179200d..7ac70d1 100644 --- a/demo/Cargo.lock +++ b/demo/Cargo.lock @@ -265,7 +265,7 @@ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "librawssg" -version = "0.3.0" +version = "0.5.0" dependencies = [ "chrono", "glob", diff --git a/demo/config.yaml b/demo/config.yaml index b735098..5a6ef1d 100644 --- a/demo/config.yaml +++ b/demo/config.yaml @@ -17,7 +17,7 @@ site: build: content_dir: "content" - output_dir: "../dist" + output_dir: "./dist" templates_dir: "templates" static_dir: "static" @@ -34,10 +34,10 @@ content_types: generators: rss: - enabled: true + enabled: false path: "rss.xml" template: "rss.xml" sitemap: - enabled: true + enabled: false path: "sitemap.xml" template: "sitemap.xml" diff --git a/demo/src/main.rs b/demo/src/main.rs index 2d98cb0..a8fbb73 100644 --- a/demo/src/main.rs +++ b/demo/src/main.rs @@ -1,51 +1,48 @@ use librawssg::markdown::PulldownMarkdown; -use librawssg::site::builder::SiteBuilder; +use librawssg::site::context::{TeraFeedContextBuilder, TeraSitemapContextBuilder}; use librawssg::site::TeraRenderer; +use librawssg::SiteBuilder; use std::path::Path; fn main() -> Result<(), Box> { tracing_subscriber::fmt::init(); - // 1. Muat konfigurasi let builder = SiteBuilder::new() .load_config("config.yaml") .expect("Gagal memuat config.yaml"); - // 2. Siapkan template engine dan muat semua template let mut tera = TeraRenderer::new(); let templates_dir = Path::new("templates"); - for entry in std::fs::read_dir(templates_dir)? { - let entry = entry?; - let path = entry.path(); - if path.is_file() { - let name = path.file_name().unwrap().to_string_lossy().into_owned(); - let content = std::fs::read_to_string(&path)?; - tera.add_raw_template(&name, &content)?; + if templates_dir.exists() { + for entry in std::fs::read_dir(templates_dir)? { + let entry = entry?; + let path = entry.path(); + if path.is_file() { + let name = path.file_name().unwrap().to_string_lossy().into_owned(); + let content = std::fs::read_to_string(&path)?; + tera.add_raw_template(&name, &content)?; + } } } - // 3. Markdown renderer let md = PulldownMarkdown; - - // 4. Direktori konten dan output let content_dir = Path::new("content"); - let output_dir = Path::new("../dist"); + let output_dir = Path::new("./dist"); - // 5. Bangun site let site = builder .content_dir(content_dir) .output_dir(output_dir) .with_template_renderer(Box::new(tera)) .with_markdown_renderer(Box::new(md)) + .with_feed_context_builder(Box::new(TeraFeedContextBuilder)) + .with_sitemap_context_builder(Box::new(TeraSitemapContextBuilder)) .build()?; - // 6. Tampilkan info halaman println!("Jumlah halaman: {}", site.pages().len()); for page in site.pages() { println!(" {} -> {}", page.file_path, page.url); } - // 7. Generate site.generate()?; println!("Situs berhasil dibuat di {}", output_dir.display()); diff --git a/docs/Cargo.lock b/docs/Cargo.lock index 31d1a3c..dcf8a13 100644 --- a/docs/Cargo.lock +++ b/docs/Cargo.lock @@ -242,7 +242,7 @@ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "librawssg" -version = "0.4.0" +version = "0.5.0" dependencies = [ "chrono", "glob", diff --git a/docs/src/main.rs b/docs/src/main.rs index d50d7a7..ee4c776 100644 --- a/docs/src/main.rs +++ b/docs/src/main.rs @@ -1,7 +1,7 @@ use librawssg::markdown::PulldownMarkdown; -use librawssg::site::builder::SiteBuilder; use librawssg::site::context::{TeraFeedContextBuilder, TeraSitemapContextBuilder}; use librawssg::site::TeraRenderer; +use librawssg::SiteBuilder; use std::path::Path; fn main() -> Result<(), Box> { @@ -24,6 +24,7 @@ fn main() -> Result<(), Box> { } let md = PulldownMarkdown; + let content_dir = Path::new("content"); let output_dir = Path::new("dist"); @@ -45,4 +46,4 @@ fn main() -> Result<(), Box> { println!("\nDocumentation built successfully in {}", output_dir.display()); Ok(()) -} +} \ No newline at end of file