[package]
name = "mountpoint-s3-fs"
# See `/doc/PUBLISHING_CRATES.md` to read how to publish new versions.
version = "0.9.0"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/awslabs/mountpoint-s3"
description = "Mountpoint S3 main library"

[dependencies]
mountpoint-s3-fuser = { path = "../mountpoint-s3-fuser", version = "0.1.1", features = ["abi-7-28", "libfuse"] }
mountpoint-s3-client = { path = "../mountpoint-s3-client", version = "0.19.6" }

anyhow = { version = "1.0.100", features = ["backtrace"] }
async-channel = "2.5.0"
async-lock = "3.4.2"
async-stream = "0.3.6"
async-trait = "0.1.89"
base64ct = "1.8.2"
bincode = { version = "2.0.1", features = ["std"] }
bitflags = "2.10.0"
bytes = { version = "1.11.0", features = ["serde"] }
clap = { version = "4.5.54", features = ["derive"] }
const_format = "0.2.35"
crc32c = "0.6.8"
csv = { version = "1.4.0", optional = true }
ctrlc = { version = "3.5.1", features = ["termination"] }
dashmap = "6.1.0"
futures = "0.3.31"
hdrhistogram = { version = "7.5.4", default-features = false }
hex = "0.4.3"
humansize = "2.1.3"
libc = "0.2.179"
linked-hash-map = "0.5.6"
metrics = "0.24.3"
nix = { version = "0.30.1", default-features = false, features = ["fs", "process", "signal", "user"] }
rand = { version = "0.9.2", features = ["small_rng"] }
regex = "1.12.2"
rusqlite = { version = "0.38.0", features = ["bundled", "fallible_uint"], optional = true }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
sha2 = "0.10.9"
signal-hook = "0.4.1"
supports-color = "3.0.2"
sysinfo = "0.37.2"
syslog = "7.0.0"
tempfile = "3.24.0"
thiserror = "2.0.17"
time = { version = "0.3.44", features = ["macros", "formatting", "serde-well-known"] }
tracing = { version = "0.1.44", features = ["log"] }
tracing-log = "0.2.0"
tracing-subscriber = { version = "0.3.22", features = ["env-filter"] }
opentelemetry = { version = "0.31.0", features = ["metrics"] }
opentelemetry_sdk = { version = "0.31.0", features = ["metrics", "rt-tokio", "spec_unstable_metrics_views"] }
opentelemetry-otlp = { version = "0.31.0", features = ["metrics", "http-proto"] }

[target.'cfg(target_os = "linux")'.dependencies]
procfs = { version = "0.18.0", default-features = false }

[dev-dependencies]
mountpoint-s3-client = { path = "../mountpoint-s3-client", features = ["mock"] }

assert_cmd = "2.1.1"
assert_fs = "1.1.3"
aws-config = "1.8.12"
aws-credential-types = "1.2.11"
aws-sdk-s3 = { version = "1.120.0", default-features = false, features = ["behavior-version-latest", "sigv4a", "rt-tokio", "default-https-client"] }
criterion = { version = "0.8.1", features = ["async", "async_futures"] }
ctor = "0.6.3"
filetime = "0.2.26"
futures = { version = "0.3.31", features = ["thread-pool"] }
opentelemetry_sdk = { version = "0.31.0", features = ["testing"] }
predicates = "3.1.3"
proptest = "1.9.0"
proptest-derive = "0.7.0"
rusty-fork = "0.3.1"
serial_test = "3.3.1"
sha2 = "0.10.9"
shuttle = { version = "0.8.1" }
syscalls = { version = "0.7.0", default-features = false }
test-case = "3.3.1"
tokio = { version = "1.49.0", features = ["rt", "macros"] }
walkdir = "2.5.0"
wiremock = "0.6.5"

[features]
# Unreleased and/or experimental features: not enabled in the release binary and may be dropped in future
block_size = []
event_log = []
mem_limiter = []
manifest = ["csv", "rusqlite"]

# Features for choosing tests
fips_tests = []
fuse_tests = []
s3_tests = []
s3express_tests = []
shuttle = []
second_account_tests = []

[[example]]
name = "mount_from_config"
required-features = ["manifest", "event_log"]

[[example]]
name = "create_manifest"
required-features = ["manifest"]

[[bench]]
name = "cache_serialization"
harness = false
