[package]
name = "garage"
version = "0.10.0"
authors = ["Alex Auvolat <alex@adnab.me>"]
edition = "2018"
license = "AGPL-3.0"
description = "Garage, an S3-compatible distributed object store for self-hosted deployments"
repository = "https://git.deuxfleurs.fr/Deuxfleurs/garage"
readme = "../../README.md"

autotests = false

[[bin]]
name = "garage"
path = "main.rs"

[[test]]
name = "integration"
path = "tests/lib.rs"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
format_table.workspace = true
garage_db.workspace = true
garage_api.workspace = true
garage_block.workspace = true
garage_model.workspace = true
garage_net.workspace = true
garage_rpc.workspace = true
garage_table.workspace = true
garage_util.workspace = true
garage_web.workspace = true

backtrace.workspace = true
bytes.workspace = true
bytesize.workspace = true
timeago.workspace = true
parse_duration.workspace = true
hex.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
rand.workspace = true
async-trait.workspace = true
sodiumoxide.workspace = true
structopt.workspace = true
git-version.workspace = true

serde.workspace = true
serde_bytes.workspace = true
toml.workspace = true

futures.workspace = true
futures-util.workspace = true
tokio.workspace = true

opentelemetry.workspace = true
opentelemetry-prometheus = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
prometheus = { workspace = true, optional = true }

[dev-dependencies]
aws-config.workspace = true
aws-sdk-s3.workspace = true
chrono.workspace = true
http.workspace = true
hmac.workspace = true
http-body-util.workspace = true
hyper.workspace = true
hyper-util.workspace = true
mktemp.workspace = true
sha2.workspace = true

static_init.workspace = true
assert-json-diff.workspace = true
serde_json.workspace = true
base64.workspace = true

k2v-client.workspace = true


[features]
default = [ "bundled-libs", "metrics", "sled", "lmdb", "sqlite", "k2v" ]

k2v = [ "garage_util/k2v", "garage_api/k2v" ]

# Database engines, Sled is still our default even though we don't like it
sled = [ "garage_model/sled" ]
lmdb = [ "garage_model/lmdb" ]
sqlite = [ "garage_model/sqlite" ]

# Automatic registration and discovery via Consul API
consul-discovery = [ "garage_rpc/consul-discovery" ]
# Automatic registration and discovery via Kubernetes API
kubernetes-discovery = [ "garage_rpc/kubernetes-discovery" ]
# Prometheus exporter (/metrics endpoint).
metrics = [ "garage_api/metrics", "opentelemetry-prometheus", "prometheus" ]
# Exporter for the OpenTelemetry Collector.
telemetry-otlp = [ "opentelemetry-otlp" ]

# NOTE: bundled-libs and system-libs should be treat as mutually exclusive;
# exactly one of them should be enabled.

# Use bundled libsqlite instead of linking against system-provided.
bundled-libs = [ "garage_db/bundled-libs" ]
# Link against system-provided libsodium and libzstd.
system-libs = [ "garage_block/system-libs", "garage_rpc/system-libs", "sodiumoxide/use-pkg-config" ]
