krz/orgo

Lightning fast org-mode static site generator. fast go org-mode static-site-generator

Cargo.toml

62 lines · 1868 bytes

 1[package]
 2name = "orgo"
 3version = "0.23.0"
 4edition = "2021"
 5description = "Org-mode static site generator that renders the org element tree straight to HTML"
 6license = "0BSD"
 7readme = "README.md"
 8# crates.io caps a keyword at 20 characters, which "static-site-generator" is not.
 9keywords = ["org-mode", "static-site", "ssg", "emacs", "blog"]
10categories = ["command-line-utilities", "text-processing"]
11repository = "https://gitbay.org/krz/orgo"
12homepage = "https://orgo.krz.sh/"
13
14# The compiler floor. orgo's own code needs 1.82 (`Option::is_none_or`); the floor is
15# 1.88 because dependencies in Cargo.lock declare it — `plist` and `time`, both by way of
16# syntect. Raising this is a minor-version change, never a patch.
17rust-version = "1.88"
18
19# Published crates carry the source, the fixtures the tests need, and nothing else. The
20# documentation site is 14 org files plus its build output, which nobody installing a
21# binary wants to download.
22exclude = ["docs/", "target/", "/.github/"]
23
24[lib]
25name = "orgo"
26path = "src/lib.rs"
27
28[[bin]]
29name = "orgo"
30path = "src/main.rs"
31
32[dependencies]
33# Parsing / model
34serde = { version = "1", features = ["derive"] }
35serde_json = "1"
36chrono = { version = "0.4", features = ["serde"] }
37camino = { version = "1", features = ["serde1"] }
38
39# Pipeline
40walkdir = "2"
41syntect = "5"
42minijinja = "2"
43blake3 = "1"
44
45# CLI / errors
46clap = { version = "4", features = ["derive"] }
47anyhow = "1"
48thiserror = "2"
49rayon = "1.12.0"
50toml = "1.1.4"
51notify = "8.2.0"
52tiny_http = "0.12.0"
53
54[dev-dependencies]
55insta = { version = "1", features = ["json"] }
56
57# Release binaries are downloaded by people evaluating the tool, so they are built to be
58# small and quick to start rather than quick to compile. Thin LTO keeps CI build times
59# reasonable; full LTO bought a few percent for minutes per job.
60[profile.release]
61lto = "thin"
62strip = "symbols"