Files
catena/Cargo.toml
T
funkpower bd104834ed 0.4.0 — MOBI and AZW books read without calibre, and a cover from Open Library
bookmeta reads MOBI 6, AZW and AZW3 from the MOBI header and its EXTH
records: title, authors, publisher, description, ISBN, subjects, date and
language, and the cover image the book carries (#1). EXTH 113 is filed by
its shape, an ASIN under asin and a calibre UUID under uuid. The EPUB
reader now keeps dc:description as well.

bibfetch fetches a book's cover from Open Library by ISBN, falling back to
the ISBN-10 form and then to the edition's own cover id, which a Record now
carries; `bibfetch cover` does the same from a terminal (#2). idnorm gains
ISBN-10 and ISBN-13 conversion.

Breaking:
- bookmeta::Metadata has two new public fields, description and cover, so
  a struct literal without `..` no longer compiles.
- bibfetch::Record has a new public field, cover_id.
- bibfetch::Error has a new variant, Invalid, so an exhaustive match
  without it no longer compiles.
- A bibfetch input file named `cover` is now read as the subcommand; pass
  it as ./cover.
2026-11-13 15:27:46 -05:00

82 lines
3.3 KiB
TOML

[workspace]
resolver = "3"
members = ["crates/*"]
[workspace.package]
version = "0.4.0"
edition = "2024"
rust-version = "1.85"
license = "MPL-2.0"
repository = "https://git.pumpin.online/funkpower/catena"
[workspace.dependencies]
catena-cli = { path = "crates/catena-cli", version = "0.4.0" }
corpus-core = { path = "crates/corpus-core", version = "0.4.0" }
cuekit = { path = "crates/cuekit", version = "0.4.0" }
textkit = { path = "crates/textkit", version = "0.4.0" }
chunkmd = { path = "crates/chunkmd", version = "0.4.0" }
mdscrub = { path = "crates/mdscrub", version = "0.4.0" }
mdsplit = { path = "crates/mdsplit", version = "0.4.0" }
pdftriage = { path = "crates/pdftriage", version = "0.4.0" }
cuenorm = { path = "crates/cuenorm", version = "0.4.0" }
cueseg = { path = "crates/cueseg", version = "0.4.0" }
rrf = { path = "crates/rrf", version = "0.4.0" }
cuepack = { path = "crates/cuepack", version = "0.4.0" }
bibclean = { path = "crates/bibclean", version = "0.4.0" }
avplan = { path = "crates/avplan", version = "0.4.0" }
pdfgutter = { path = "crates/pdfgutter", version = "0.4.0" }
catena = { path = "crates/bindings", version = "0.4.0" }
seriesof = { path = "crates/seriesof", version = "0.4.0" }
idnorm = { path = "crates/idnorm", version = "0.4.0" }
bibfetch = { path = "crates/bibfetch", version = "0.4.0" }
bookmeta = { path = "crates/bookmeta", version = "0.4.0" }
langid = { path = "crates/langid", version = "0.4.0" }
tocfind = { path = "crates/tocfind", version = "0.4.0" }
booksniff = { path = "crates/booksniff", version = "0.4.0" }
citefind = { path = "crates/citefind", version = "0.4.0" }
colophon = { path = "crates/colophon", version = "0.4.0" }
emb = { path = "crates/emb", version = "0.4.0" }
clap = { version = "4", features = ["derive"] }
clap_mangen = "0.3"
pyo3 = { version = "0.27", features = ["extension-module", "abi3-py39"] }
wasm-bindgen = "0.2"
serde-wasm-bindgen = "0.6"
deunicode = "1"
fancy-regex = "0.16"
# 0.38 is the last release that builds on the pinned toolchain; the ones
# after it need a newer compiler than the rest of this asks for.
lopdf = { version = "0.38", default-features = false }
# Reading one small member out of an EPUB. Default features pull in four
# compression backends; an EPUB is deflate or nothing.
zip = { version = "2", default-features = false, features = ["deflate"] }
regex = "1"
schemars = "1"
serde = { version = "1", features = ["derive"] }
# float_roundtrip: without it a float read back from JSON can be one unit in
# the last place away from the one that was written, which would make a
# record that round-trips through a pipe not the record it started as.
serde_json = { version = "1", features = ["float_roundtrip"] }
thiserror = "2"
unicode-general-category = "1"
unicode-normalization = "0.1"
ureq = { version = "3", features = ["json"] }
tiktoken-rs = "0.12"
[workspace.lints.rust]
unsafe_code = "forbid"
missing_docs = "warn"
[profile.release]
strip = true
lto = true
codegen-units = 1
# The Python extension module, which cannot be stripped the way a binary can.
# Stripping a dylib's symbols leaves one macOS refuses to load at all —
# "mis-aligned LINKEDIT string pool" — and there is nothing to strip for
# anyway, since the interpreter resolves its symbols at load time.
[profile.wheel]
inherits = "release"
strip = false