[package]
name = "cvmfs"
version = "0.4.2"
description = "CernVM-FS client implementation in Rust"
authors = ["José Molina <jmolinacolmenero@gmail.com>"]
edition = "2024"
license = "BSD-3-Clause"
repository = "https://github.com/moliholy/cvmfs-rust"
keywords = ["cvmfs", "filesystem", "fuse", "cernvm"]
categories = ["filesystem", "science", "caching", "command-line-utilities"]
readme = "README.md"

[lib]
name = "cvmfs"
path = "src/lib.rs"

[[bin]]
name = "cvmfs-cli"
path = "src/main.rs"


[dependencies]
# Cryptography and hashing
sha1 = "0.10"
md5 = "0.8"
hex = "0.4"
x509-certificate = "0.25"

# Database and storage
rusqlite = { version = "0.39", features = ["blob", "bundled"] }

# Filesystem integration
fuser = "0.17"
libc = "0.2"

# Network and HTTP
reqwest = { version = "0.13", features = ["blocking"] }

# Utilities
chrono = "0.4"
compress = "0.2"
thiserror = "2.0"

# Logging
log = "0.4"
env_logger = "0.11"
rsa = { version = "0.9", features = ["sha1"] }
lz4_flex = "0.13"
zstd = "0.13"
parking_lot = "0.12"

[dev-dependencies]
serial_test = "3.4"
flate2 = "1.1"

[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }{ archive-suffix }"
bin-dir = "{ bin }{ binary-ext }"
pkg-fmt = "tgz"

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

[profile.dev]
debug = true

[workspace.lints.rust]
missing_docs = "deny"
unsafe_code = "deny"

[workspace.lints.clippy]
pedantic = { level = "deny", priority = -1 }
dbg_macro = "deny"
print_stdout = "deny"
print_stderr = "deny"
todo = "deny"
unimplemented = "deny"
redundant_type_annotations = "deny"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
doc_markdown = "allow"
wildcard_imports = "allow"
ref_option_ref = "allow"
