[workspace.package]
version = "315.251204.0"
rust-version = "1.84.0"
edition = "2021"
homepage = "https://tutao.de"
repository = "https://github.com/tutao/tutanota"
license-file = "LICENSE.txt"
publish = false

[profile]
# these config should be configured in .cargo/config.toml

[workspace]
resolver = "2" # todo: can use resolver 3 after 1.84.0+
members = [
    "tuta-sdk/rust/sdk",
    "packages/node-mimimi",
    # uniffi-bindgen is a seperate crate as uniffi-bindgen does not have a cli yet:
    # https://github.com/mozilla/uniffi-rs/blob/fbe146f/docs/manual/src/tutorial/foreign_language_bindings.md#creating-the-bindgen-binary
    # note: not to be confused with `bindgen` binary which is from: https://github.com/rust-lang/rust-bindgen
    "tuta-sdk/rust/uniffi-bindgen",
    "tuta-sdk/rust/crypto-primitives"
]

# in most cases, we don't want to build everything.
# this requires passing --all or --package <package-name> to
# cargo for almost anything
default-members = []

[workspace.dependencies]
tuta-sdk = { path = "tuta-sdk/rust/sdk", default-features = false }
crypto-primitives = { path = "tuta-sdk/rust/crypto-primitives", default-features = false }
thiserror = { version = "2.0" }
base64 = { version = "0.22.1" }
log = { version = "0.4.22" }
serde = { version = "1.0.210", features = ["derive", "rc"] }
serde_json = { version = "1.0.117" }
tokio = { version = "1.43", default-features = false }
uniffi = { git = "https://github.com/mozilla/uniffi-rs.git", rev = "13a1c559cb3708eeca40dcf95dc8b3ccccf3b88c", default-features = false }
rand = { version = "0.8" }

# --------- lints

# lints.cargo not supported on stable yet.
# [workspace.lints.cargo]

[workspace.lints.clippy]
new_without_default = "allow" # we don't want to implement Default for everything
enum_variant_names = "allow"  # creates more problems than it solves
let_and_return = "allow"      # we commonly use this style
too_many_arguments = "allow"  # this is fine

# "pedantic" lints worth warning on
manual_let_else = "warn"
must_use_candidate = "warn"
unused_async = "warn"
implicit_clone = "warn"
explicit_iter_loop = "warn"

[profile.release-wasm]
inherits = "release"
# Tell `rustc` to optimize for small code size.
opt-level = "s"