bale 0.1.0

A mmap-first, fixed-stride zip-like pack format
Documentation
[package]
name = "bale"
version = "0.1.0"
authors = ["Adam Mill <hismajesty@theroyalwhee.com>"]
edition = "2024"
rust-version = "1.89.0"
description = "A mmap-first, fixed-stride zip-like pack format"
license = "Apache-2.0"
repository = "https://github.com/theroyalwhee0/bale"
keywords = ["archive", "zip", "mmap", "pack", "fuse"]
categories = ["compression", "filesystem"]
exclude = [
    "CLAUDE.md",
    "CODE_OF_CONDUCT.md",
    "CONTRIBUTING.md",
    "SECURITY.md",
    ".markdownlintrc",
    "clippy.toml",
    "docs/",
]

[[bin]]
name = "bale"
path = "src/bin/bale/main.rs"
required-features = ["bin"]

[features]
default = ["bin"]
reader = []
writer = []
compact = ["reader", "writer"]
cli = ["reader", "writer", "dep:clap", "dep:env_logger"]
fuse = ["cli", "dep:fuser"]
bin = ["compact", "fuse"]
# Enable integration tests requiring external tools (zipinfo, unzip, file, fusermount).
integration-tests = []

[dependencies]
# General.
thiserror = "2.0.17"
chrono = "0.4.42"
nix = { version = "0.30.1", default-features = false, features = ["fs", "process", "user"] }
crc32fast = "1.5.0"
zerocopy = { version = "0.8.31", features = ["derive"] }

# Logging.
log = "0.4.29"
env_logger = { version = "0.11.8", optional = true }

# File System.
tempfile = "3.24.0"
safename = { version = "0.1.0", features = ["medium"] }
fs4 = "0.13.1"
memmap2 = "0.9.9"

# CLI (optional)
clap = { version = "4", features = ["derive"], optional = true }

# FUSE (optional)
fuser = { version = "0.16.0", optional = true }

[build-dependencies]
chrono = "0.4.42"

[dev-dependencies]
proptest = "1.9.0"
trycmd = "0.15.11"

[lints.rust]
# Deny unsafe by default, but allow with #[allow(unsafe_code)] for documented cases
# like memory mapping where the operation is inherently unsafe but well-understood.
unsafe_code = "deny"
missing_docs = "deny"

[lints.rustdoc]
missing_crate_level_docs = "deny"
broken_intra_doc_links = "deny"
private_intra_doc_links = "deny"
invalid_codeblock_attributes = "deny"
bare_urls = "deny"
redundant_explicit_links = "deny"

[lints.clippy]
print_stdout = "deny"
print_stderr = "deny"
disallowed_methods = "deny"
missing_docs_in_private_items = "deny"
missing_panics_doc = "deny"
missing_errors_doc = "deny"
missing_safety_doc = "deny"