texforge 0.7.0

Self-contained LaTeX to PDF compiler CLI
[package]
name = "texforge"
version = "0.7.0"
edition = "2021"
rust-version = "1.75"
description = "Self-contained LaTeX to PDF compiler CLI"
license = "MIT"
repository = "https://github.com/UniverLab/texforge"
keywords = ["latex", "pdf", "compiler", "cli"]
categories = ["command-line-utilities", "development-tools"]

[[bin]]
name = "texforge"
path = "src/main.rs"

[dependencies]
# Interactive prompts
inquire = "0.7"

# CLI argument parsing
clap = { version = "4.6", features = ["derive"] }

# Error handling
anyhow = "1.0"

# Serialization (for project.toml, template.toml)
serde = { version = "1.0", features = ["derive"] }
toml = "1.1"

# File system operations
walkdir = "2.5"

# Home directory resolution
dirs = "6.0"

# HTTP client (template downloads). rustls with the `ring` provider instead of
# the default `aws-lc-rs`: ring is pure-Rust+portable asm and cross-compiles
# cleanly to Windows/musl without a C toolchain (aws-lc-sys needs clang/NASM).
reqwest = { version = "0.13", default-features = false, features = [
    "blocking",
    "json",
    "http2",
    "charset",
    "rustls-no-provider",
] }
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }

# Archive extraction (GitHub tarballs + tectonic zip on Windows)
flate2 = "1.1"
tar = "0.4"
zip = { version = "2", default-features = false, features = ["deflate"] }

# File watching for --watch mode
notify = { version = "7", features = ["macos_fsevent"] }

# Mermaid diagram rendering
mermaid-rs-renderer = { version = "0.2", default-features = false }
resvg = "0.46"

# Graphviz/DOT diagram rendering
layout-rs = "0.1"

# D2 diagram rendering (pure-Rust port of the d2lang pipeline, MPL-2.0)
d2-little = "0.7.1-1"

# Temporary directories for build
tempfile = "3.8"

[lints.clippy]
needless_pass_by_value = "warn"
redundant_closure = "warn"
redundant_clone = "warn"
large_enum_variant = "warn"
manual_let_else = "warn"
semicolon_if_nothing_returned = "warn"
inconsistent_struct_constructor = "warn"
doc_markdown = "warn"

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true