From 05d66c21439d4c1e45eba2b3e41e4646993d69e1 Mon Sep 17 00:00:00 2001 From: zyl Date: Wed, 4 Jun 2025 23:52:10 -0700 Subject: [PATCH 1/5] fix webdog script insertion with custom paths --- src/builder.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/builder.rs b/src/builder.rs index d08a916..7ca49a6 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -2,15 +2,15 @@ use std::{collections::HashMap, path::PathBuf}; -use eyre::{eyre, Context, OptionExt}; -use lol_html::{element, html_content::ContentType, HtmlRewriter, Settings}; +use eyre::{Context, OptionExt, eyre}; +use lol_html::{HtmlRewriter, Settings, element, html_content::ContentType}; use rayon::prelude::*; use serde::Serialize; use syntect::{highlighting::ThemeSet, parsing::SyntaxSet}; use tera::Tera; use url::Url; -use crate::{resource::ResourceBuilder, util, PageMetadata, Site, ROOT_PATH, SASS_PATH}; +use crate::{PageMetadata, ROOT_PATH, SASS_PATH, Site, resource::ResourceBuilder, util}; /// Default path for static webdog resources included with the site build. const WEBDOG_DEFAULT_PATH: &str = "webdog"; @@ -161,6 +161,7 @@ impl SiteBuilder { } /// Function to rewrite HTML wow. + #[allow(clippy::too_many_arguments)] pub fn rewrite_html( &self, html: String, @@ -169,6 +170,7 @@ impl SiteBuilder { scripts: &[String], styles: &[String], is_partial: bool, + webdog_path: &str, ) -> eyre::Result { use kuchikiki::traits::*; @@ -257,7 +259,9 @@ impl SiteBuilder { ); } el.append( - r#""#, + &format!( + r#""# + ), ContentType::Html, ); if self.serving { @@ -383,6 +387,12 @@ impl SiteBuilder { &page_metadata.scripts, &page_metadata.styles, page_metadata.is_partial, + &self + .site + .config + .webdog_path + .clone() + .unwrap_or_else(|| WEBDOG_DEFAULT_PATH.to_string()), )?; if let Some(data) = extra { From 2330648b69ba56d18c44116b4f7131bc24dc9bcc Mon Sep 17 00:00:00 2001 From: zyl Date: Wed, 4 Jun 2025 23:52:30 -0700 Subject: [PATCH 2/5] bump version --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 14e834d..f89c29c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3019,7 +3019,7 @@ dependencies = [ [[package]] name = "webdog" -version = "0.1.2" +version = "0.1.3" dependencies = [ "clap", "color-eyre", diff --git a/Cargo.toml b/Cargo.toml index 78542fe..125920f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ license = "AGPL-3.0-or-later" name = "webdog" readme = "README.md" repository = "https://github.com/zyllian/webdog" -version = "0.1.2" +version = "0.1.3" [dependencies] clap = { version = "4", features = ["derive"] } From abd591c8fa300535f6ac9f682399d3e1edbed171 Mon Sep 17 00:00:00 2001 From: zyl Date: Thu, 5 Jun 2025 14:13:43 -0700 Subject: [PATCH 3/5] remove unused tokio macros feature --- Cargo.lock | 12 ------------ Cargo.toml | 5 +---- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f89c29c..5ef7c9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2652,21 +2652,9 @@ dependencies = [ "mio 1.0.4", "pin-project-lite", "socket2", - "tokio-macros", "windows-sys 0.52.0", ] -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - [[package]] name = "tokio-tungstenite" version = "0.21.0" diff --git a/Cargo.toml b/Cargo.toml index 125920f..0476148 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,10 +35,7 @@ serde_yaml_ng = "0.10" syntect = "5" tera = "1" time = { version = "0.3", features = ["serde-human-readable"] } -tokio = { version = "1", features = [ - "macros", - "rt-multi-thread", -], optional = true } +tokio = { version = "1", features = ["rt-multi-thread"], optional = true } url = { version = "2", features = ["serde"] } walkdir = "2" warp = { version = "0.3", optional = true } From 230e22dbf8ed5f24f4a7cc8a1b05d78ad47ab65d Mon Sep 17 00:00:00 2001 From: zyl Date: Thu, 5 Jun 2025 14:16:55 -0700 Subject: [PATCH 4/5] remove unused fs_extra dependency --- Cargo.lock | 7 ------- Cargo.toml | 1 - 2 files changed, 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5ef7c9c..b478380 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -690,12 +690,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - [[package]] name = "fsevent-sys" version = "4.1.0" @@ -3013,7 +3007,6 @@ dependencies = [ "color-eyre", "extract-frontmatter", "eyre", - "fs_extra", "futures", "grass", "hotwatch", diff --git a/Cargo.toml b/Cargo.toml index 0476148..2df01d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,6 @@ clap = { version = "4", features = ["derive"] } color-eyre = { version = "0.6", optional = true } extract-frontmatter = "4" eyre = "0.6" -fs_extra = "1.2" futures = { version = "0.3", optional = true } grass = { version = "0.13", default-features = false } hotwatch = { version = "0.5", optional = true } From 9125738498759e6a7fe188331829b065bcfed758 Mon Sep 17 00:00:00 2001 From: zyl Date: Thu, 5 Jun 2025 14:26:17 -0700 Subject: [PATCH 5/5] remove itertools dependency --- Cargo.lock | 10 ---------- Cargo.toml | 1 - src/extras.rs | 13 +++++++------ src/resource.rs | 17 ++++++++--------- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b478380..7949417 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1291,15 +1291,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.15" @@ -3012,7 +3003,6 @@ dependencies = [ "hotwatch", "html5ever 0.31.0", "include_dir", - "itertools", "kuchikiki", "lol_html", "minifier", diff --git a/Cargo.toml b/Cargo.toml index 2df01d2..1148bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,6 @@ grass = { version = "0.13", default-features = false } hotwatch = { version = "0.5", optional = true } html5ever = "0.31" include_dir = "0.7" -itertools = "0.14" kuchikiki = "0.8.8-speedreader" lol_html = "2" minifier = { version = "0.3", features = ["html"] } diff --git a/src/extras.rs b/src/extras.rs index 94250bd..60e1d93 100644 --- a/src/extras.rs +++ b/src/extras.rs @@ -1,5 +1,4 @@ -use itertools::Itertools; -use lol_html::{element, RewriteStrSettings}; +use lol_html::{RewriteStrSettings, element}; use serde::{Deserialize, Serialize}; use crate::{builder::SiteBuilder, resource::ResourceTemplateData}; @@ -111,10 +110,12 @@ fn resource_list_outside( ) .map(|ts| (id, v, ts)) }) - .map_ok(|(id, v, ts)| ResourceTemplateData { - resource: v, - id: id.clone(), - readable_timestamp: ts, + .map(|v| { + v.map(|(id, v, ts)| ResourceTemplateData { + resource: v, + id: id.clone(), + readable_timestamp: ts, + }) }) .collect::>>()?, })?, diff --git a/src/resource.rs b/src/resource.rs index a59a4f7..f04f8a3 100644 --- a/src/resource.rs +++ b/src/resource.rs @@ -4,17 +4,16 @@ use std::{ }; use eyre::Context; -use itertools::Itertools; -use rss::{validation::Validate, ChannelBuilder, ItemBuilder}; +use rss::{ChannelBuilder, ItemBuilder, validation::Validate}; use serde::{Deserialize, Serialize}; -use time::{format_description::well_known::Rfc2822, OffsetDateTime}; +use time::{OffsetDateTime, format_description::well_known::Rfc2822}; use crate::{ + PageMetadata, builder::SiteBuilder, frontmatter::FrontMatterRequired, link_list::Link, util::{self, format_timestamp}, - PageMetadata, }; /// Metadata for resources. @@ -319,7 +318,7 @@ impl ResourceBuilder { let page_max = list.len() / items_per_page + (list.len() % items_per_page).min(1); let mut previous = None; let mut next; - for (page, iter) in list.iter().chunks(items_per_page).into_iter().enumerate() { + for (page, iter) in list.chunks(items_per_page).enumerate() { next = (page + 1 != page_max).then_some(page + 2); let out = builder.build_page_raw( PageMetadata { @@ -329,7 +328,7 @@ impl ResourceBuilder { }, "", ResourceListTemplateData { - resources: iter.copied().collect(), + resources: iter.to_vec(), tag, rss_enabled: config.rss.is_some(), page: page + 1, @@ -372,7 +371,7 @@ impl ResourceBuilder { // Build list of tags { - let links = tags + let mut links: Vec<_> = tags .iter() .map(|(tag, data)| { let count = data.len(); @@ -384,9 +383,9 @@ impl ResourceBuilder { count, ) }) - .sorted_by(|(_, a), (_, b)| b.cmp(a)) - .map(|(l, _)| l) .collect(); + links.sort_by(|(_, a), (_, b)| b.cmp(a)); + let links = links.into_iter().map(|(l, _)| l).collect(); let out = crate::link_list::render_basic_link_list( builder, &self.config.tag_list_template,