From 8685e51d0d89b99f1578a37a065e021327ae2a88 Mon Sep 17 00:00:00 2001 From: zyl Date: Wed, 15 Jan 2025 01:46:56 -0800 Subject: [PATCH 1/5] fix license --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index b84dee0..6efb188 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ description = "static site generator fit for a dog" edition = "2021" homepage = "https://webdog.zyl.gay" -license = "AGPLv2" +license = "AGPL-3.0-or-later" name = "webdog" readme = "README.md" repository = "https://github.com/zyllian/webdog" From 855d29d9c4991f337a587b1e579cb5d10066b42e Mon Sep 17 00:00:00 2001 From: zyl Date: Wed, 15 Jan 2025 01:50:04 -0800 Subject: [PATCH 2/5] update install command on site --- site/pages/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/pages/index.md b/site/pages/index.md index 78e9937..0c4de07 100644 --- a/site/pages/index.md +++ b/site/pages/index.md @@ -5,7 +5,7 @@ welcome to webdog, the static site generator fit for a dog :3 if you have [rust](https://rust-lang.org) installed, all you need to do to install webdog is run the following command: ```sh -cargo install webdog --git https://github.com/zyllian/webdog +cargo install webdog ``` then you can make your first webdog site! From 6edcb6a19072c020cb7a449ed11f1d671f59bded Mon Sep 17 00:00:00 2001 From: zyl Date: Mon, 27 Jan 2025 12:00:20 -0800 Subject: [PATCH 3/5] move away from serde_yml (ai garbage..) to serde_yaml_ng --- Cargo.lock | 34 +++++++++++----------------------- Cargo.toml | 2 +- src/builder.rs | 10 ++++++---- src/extras.rs | 6 +++--- src/frontmatter.rs | 4 ++-- src/lib.rs | 6 ++++-- src/main.rs | 14 +++++++++----- src/resource.rs | 9 ++++++--- src/serving.rs | 2 +- 9 files changed, 43 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 26d4964..a82f809 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -115,12 +115,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "anyhow" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" - [[package]] name = "atom_syndication" version = "0.12.6" @@ -1449,16 +1443,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "libyml" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3302702afa434ffa30847a83305f0a69d6abd74293b6554c18ec85c7ef30c980" -dependencies = [ - "anyhow", - "version_check", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -2398,18 +2382,16 @@ dependencies = [ ] [[package]] -name = "serde_yml" -version = "0.0.12" +name = "serde_yaml_ng" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" +checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f" dependencies = [ "indexmap", "itoa 1.0.14", - "libyml", - "memchr", "ryu", "serde", - "version_check", + "unsafe-libyaml", ] [[package]] @@ -2938,6 +2920,12 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "url" version = "2.5.4" @@ -3127,7 +3115,7 @@ dependencies = [ "rayon", "rss", "serde", - "serde_yml", + "serde_yaml_ng", "syntect", "tera", "time", diff --git a/Cargo.toml b/Cargo.toml index 6efb188..5f2a8a3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ pulldown-cmark = {version = "0.12", default-features = false, features = [ rayon = "1" rss = {version = "2", features = ["validation"]} serde = {version = "1", features = ["derive"]} -serde_yml = "0.0.12" +serde_yaml_ng = "0.10" syntect = "5" tera = "1" time = {version = "0.3", features = ["serde-human-readable"]} diff --git a/src/builder.rs b/src/builder.rs index d5da847..5f4540f 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -25,7 +25,7 @@ struct TemplateData<'a, T> { /// Custom template data. pub data: T, /// Userdata supplied from the page. - pub userdata: serde_yml::Value, + pub userdata: serde_yaml_ng::Value, } /// Struct used to build the site. @@ -189,7 +189,7 @@ impl SiteBuilder { let new_html = self.build_page_raw( PageMetadata { template: Some(template.to_string()), - userdata: serde_yml::to_value(attr_map)?, + userdata: serde_yaml_ng::to_value(attr_map)?, is_partial: true, ..Default::default() }, @@ -267,7 +267,8 @@ impl SiteBuilder { #[allow(clippy::single_match)] match command { "cdn" => { - new_src = self.site.config.cdn_url(&new_src)?.to_string(); + new_src = + self.site.config.cdn_url(&new_src)?.to_string(); } _ => new_src = src, } @@ -291,7 +292,8 @@ impl SiteBuilder { )?; } "cdn" => { - new_href = self.site.config.cdn_url(&new_href)?.to_string(); + new_href = + self.site.config.cdn_url(&new_href)?.to_string(); } _ => { new_href = href; diff --git a/src/extras.rs b/src/extras.rs index 33feb51..94250bd 100644 --- a/src/extras.rs +++ b/src/extras.rs @@ -30,7 +30,7 @@ impl Extra { match self { Self::Basic => { - let data: BasicData = serde_yml::from_value(data.inner.clone())?; + let data: BasicData = serde_yaml_ng::from_value(data.inner.clone())?; let content = builder.tera.render(&data.template, &tera::Context::new())?; append_to(&page, &content, "main.page") } @@ -46,7 +46,7 @@ pub struct ExtraData { pub name: String, /// The inner data for the extra. #[serde(flatten)] - pub inner: serde_yml::Value, + pub inner: serde_yaml_ng::Value, } /// Gets the extra for the given value. @@ -90,7 +90,7 @@ fn resource_list_outside( resources: Vec>, } - let data: ResourceListData = serde_yml::from_value(data.inner.clone())?; + let data: ResourceListData = serde_yaml_ng::from_value(data.inner.clone())?; let res_builder = builder .resource_builders diff --git a/src/frontmatter.rs b/src/frontmatter.rs index 326d4ac..c5fc53a 100644 --- a/src/frontmatter.rs +++ b/src/frontmatter.rs @@ -32,7 +32,7 @@ where pub fn parse(input: String) -> eyre::Result { if input.starts_with("---\n") { if let Some((frontmatter, content)) = input[3..].split_once("\n---\n") { - let data = serde_yml::from_str(frontmatter)?; + let data = serde_yaml_ng::from_str(frontmatter)?; return Ok(Self { content: content.to_string(), data, @@ -56,7 +56,7 @@ where if let Some(data) = &self.data { output.push_str("---\n"); - output.push_str(&serde_yml::to_string(data)?); + output.push_str(&serde_yaml_ng::to_string(data)?); output.push_str("---\n\n"); } diff --git a/src/lib.rs b/src/lib.rs index 317becb..27f0591 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -100,7 +100,9 @@ impl SiteConfig { if !config_path.exists() { eyre::bail!("no site config found!"); } - Ok(serde_yml::from_str(&std::fs::read_to_string(config_path)?)?) + Ok(serde_yaml_ng::from_str(&std::fs::read_to_string( + config_path, + )?)?) } } @@ -129,7 +131,7 @@ pub struct PageMetadata { pub extra: Option, /// Custom values passed to the base template. #[serde(default)] - pub userdata: serde_yml::Value, + pub userdata: serde_yaml_ng::Value, /// Whether this page being rendered is a partial. Set by the builder, not your page metadata. #[serde(skip)] pub is_partial: bool, diff --git a/src/main.rs b/src/main.rs index f93091c..47a967b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -135,7 +135,7 @@ fn main() -> eyre::Result<()> { let config = SiteConfig::new(base_url.clone(), cdn_url.unwrap_or(base_url), title); std::fs::write( cli.site.join(SiteConfig::FILENAME), - serde_yml::to_string(&config)?, + serde_yaml_ng::to_string(&config)?, )?; DEFAULT_PROJECT.extract(&cli.site)?; std::fs::create_dir(cli.site.join(webdog::ROOT_PATH))?; @@ -227,7 +227,7 @@ fn main() -> eyre::Result<()> { config.resources.insert(id.clone(), resource_config); - std::fs::write(config_path, serde_yml::to_string(&config)?)?; + std::fs::write(config_path, serde_yaml_ng::to_string(&config)?)?; let resource_path = cli.site.join(webdog::RESOURCES_PATH).join(&id); std::fs::create_dir_all(&resource_path)?; @@ -240,7 +240,7 @@ fn main() -> eyre::Result<()> { tags: vec!["first".to_string()], cdn_file: None, desc: Some(format!("This is the first {name} :)")), - inner: serde_yml::Value::Null, + inner: serde_yaml_ng::Value::Null, draft: true, }, )?; @@ -256,7 +256,11 @@ fn main() -> eyre::Result<()> { title, template, } => { - let page_path = cli.site.join(webdog::PAGES_PATH).join(&id).with_extension("md"); + let page_path = cli + .site + .join(webdog::PAGES_PATH) + .join(&id) + .with_extension("md"); let dir = page_path.parent().expect("should never fail"); if page_path.exists() { eprintln!("page already exists!"); @@ -310,7 +314,7 @@ fn main() -> eyre::Result<()> { tags, cdn_file: None, desc: description, - inner: serde_yml::Value::Null, + inner: serde_yaml_ng::Value::Null, draft: !skip_draft, }, )?; diff --git a/src/resource.rs b/src/resource.rs index 433584c..a59a4f7 100644 --- a/src/resource.rs +++ b/src/resource.rs @@ -10,8 +10,11 @@ use serde::{Deserialize, Serialize}; use time::{format_description::well_known::Rfc2822, OffsetDateTime}; use crate::{ - builder::SiteBuilder, frontmatter::FrontMatterRequired, link_list::Link, - util::{self, format_timestamp}, PageMetadata, + builder::SiteBuilder, + frontmatter::FrontMatterRequired, + link_list::Link, + util::{self, format_timestamp}, + PageMetadata, }; /// Metadata for resources. @@ -30,7 +33,7 @@ pub struct ResourceMetadata { pub desc: Option, /// Extra resource data not included. #[serde(flatten)] - pub inner: serde_yml::Value, + pub inner: serde_yaml_ng::Value, /// Whether the resource is a draft. Drafts can be committed without being published to the live site. #[serde(default)] pub draft: bool, diff --git a/src/serving.rs b/src/serving.rs index 9887f93..f3a0d64 100644 --- a/src/serving.rs +++ b/src/serving.rs @@ -95,7 +95,7 @@ fn create( builder.build_all_resources()?; } } else if relative_path.display().to_string() == SiteConfig::FILENAME { - let new_config = serde_yml::from_str(&std::fs::read_to_string(path)?)?; + let new_config = serde_yaml_ng::from_str(&std::fs::read_to_string(path)?)?; builder.site.config = new_config; builder.reload()?; builder.build_all()?; From 00fbc306e75e12943bdf65ffca9621514e5f15a1 Mon Sep 17 00:00:00 2001 From: zyl Date: Mon, 27 Jan 2025 12:05:48 -0800 Subject: [PATCH 4/5] v0.1.1 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a82f809..697f8c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3094,7 +3094,7 @@ dependencies = [ [[package]] name = "webdog" -version = "0.1.0" +version = "0.1.1" dependencies = [ "clap", "color-eyre", diff --git a/Cargo.toml b/Cargo.toml index 5f2a8a3..a647498 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.0" +version = "0.1.1" [dependencies] clap = {version = "4", features = ["derive"]} From e555f437c7c23170f2e653c23117f4c6f45644a5 Mon Sep 17 00:00:00 2001 From: zyl Date: Sun, 23 Mar 2025 21:40:27 -0700 Subject: [PATCH 5/5] recommend installing webdog with locked dependencies --- README.md | 2 +- site/pages/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d083a2d..e83f957 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ webdog, the static site generator fit for a dog :3 ```sh -cargo install webdog +cargo install webdog --locked ``` after installing, you can create your first site: diff --git a/site/pages/index.md b/site/pages/index.md index 0c4de07..8f70fbc 100644 --- a/site/pages/index.md +++ b/site/pages/index.md @@ -5,7 +5,7 @@ welcome to webdog, the static site generator fit for a dog :3 if you have [rust](https://rust-lang.org) installed, all you need to do to install webdog is run the following command: ```sh -cargo install webdog +cargo install webdog --locked ``` then you can make your first webdog site!