# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.87.0"
name = "stratisd"
version = "3.9.1"
authors = ["Stratis Developers <stratis-devel@lists.fedorahosted.org>"]
build = "build.rs"
exclude = [
    "/.clippy.toml",
    "/.fmf",
    "/.githooks",
    "/.github",
    "/.gitignore",
    "/.packit.yaml",
    "/.yamlint.yaml",
    "/_typos.toml",
    "/Makefile",
    "/README_tests.md",
    "/docs",
    "/dracut",
    "/plans",
    "/stratisd.conf",
    "/systemd",
    "/tests",
    "/tests-fmf",
    "/udev",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Stratis daemon"
readme = "README.md"
keywords = [
    "Linux",
    "filesystem",
    "storage",
]
categories = ["filesystem"]
license = "MPL-2.0"
repository = "https://github.com/stratis-storage/stratisd/"

[package.metadata.vendor-filter]
platforms = ["*-unknown-linux-gnu"]
tier = "2"
all-features = true

[[package.metadata.vendor-filter.exclude-crate-paths]]
name = "libdbus-sys"
exclude = "vendor"

[features]
dbus_enabled = ["dep:zbus"]
default = [
    "dbus_enabled",
    "engine",
]
engine = [
    "dep:async-trait",
    "dep:byteorder",
    "dep:chrono",
    "dep:clap",
    "dep:crc",
    "dep:data-encoding",
    "dep:devicemapper",
    "dep:either",
    "dep:env_logger",
    "dep:futures",
    "dep:indexmap",
    "dep:itertools",
    "dep:libblkid-rs",
    "dep:libc",
    "dep:libcryptsetup-rs",
    "dep:libcryptsetup-rs-sys",
    "dep:libudev",
    "dep:linux-raw-sys",
    "dep:log",
    "dep:nix",
    "dep:procfs",
    "dep:rand",
    "dep:regex",
    "dep:retry",
    "dep:semver",
    "dep:serde",
    "dep:serde_derive",
    "dep:serde_json",
    "dep:sha2",
    "dep:stratisd_proc_macros",
    "dep:strum",
    "dep:strum_macros",
    "dep:tempfile",
    "dep:tokio",
    "dep:uuid",
]
extras = ["dep:pretty-hex"]
min = ["dep:termios"]
systemd_compat = ["dep:bindgen"]
udev_scripts = ["dep:data-encoding"]

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

[[bin]]
name = "stratis-base32-decode"
path = "src/bin/udev-lib/stratis-base32-decode.rs"
required-features = ["udev_scripts"]

[[bin]]
name = "stratis-min"
path = "src/bin/stratis-min/stratis-min.rs"
required-features = [
    "engine",
    "min",
]

[[bin]]
name = "stratis-str-cmp"
path = "src/bin/udev-lib/stratis-str-cmp.rs"
required-features = ["udev_scripts"]

[[bin]]
name = "stratis-utils"
path = "src/bin/stratis-utils.rs"
required-features = [
    "dbus_enabled",
    "engine",
]

[[bin]]
name = "stratisd"
path = "src/bin/stratisd.rs"
required-features = ["engine"]

[[bin]]
name = "stratisd-min"
path = "src/bin/stratis-min/stratisd-min.rs"
required-features = [
    "engine",
    "min",
]

[[bin]]
name = "stratisd-tools"
path = "src/bin/stratisd-tools.rs"
required-features = [
    "engine",
    "extras",
]

[dependencies.async-trait]
version = "0.1.80"
optional = true

[dependencies.byteorder]
version = "1.2.3"
optional = true

[dependencies.chrono]
version = "0.4.31"
features = [
    "clock",
    "std",
]
optional = true
default-features = false

[dependencies.clap]
version = "4.5.0"
features = ["derive"]
optional = true

[dependencies.crc]
version = "3.0.0"
optional = true

[dependencies.data-encoding]
version = "2.3.0"
optional = true

[dependencies.devicemapper]
version = "0.34.4"
optional = true

[dependencies.either]
version = "1.6.1"
optional = true

[dependencies.env_logger]
version = "0.11.0"
optional = true

[dependencies.futures]
version = "0.3.31"
optional = true

[dependencies.indexmap]
version = "2.7.0"
optional = true

[dependencies.itertools]
version = "0.14.0"
optional = true

[dependencies.libblkid-rs]
version = "0.4.0"
optional = true

[dependencies.libc]
version = "0.2.180"
optional = true

[dependencies.libcryptsetup-rs]
version = "0.16.1"
features = ["mutex"]
optional = true

[dependencies.libcryptsetup-rs-sys]
version = "0.7.0"
optional = true

[dependencies.libudev]
version = "0.3.0"
optional = true

[dependencies.linux-raw-sys]
version = "0.12.0"
features = [
    "general",
    "ioctl",
]
optional = true

[dependencies.log]
version = "0.4.20"
optional = true

[dependencies.nix]
version = "0.31.1"
features = [
    "fs",
    "ioctl",
    "mount",
    "poll",
    "process",
    "sched",
    "signal",
    "socket",
]
optional = true

[dependencies.pretty-hex]
version = "0.4.1"
optional = true

[dependencies.procfs]
version = "0.18.0"
optional = true

[dependencies.rand]
version = "0.10.0"
optional = true

[dependencies.regex]
version = "1.5.5"
optional = true

[dependencies.retry]
version = "2.0.0"
optional = true
default-features = false

[dependencies.semver]
version = "1.0.0"
optional = true

[dependencies.serde]
version = "1.0.200"
optional = true

[dependencies.serde_derive]
version = "1.0.200"
optional = true

[dependencies.serde_json]
version = "1.0.50"
optional = true

[dependencies.sha2]
version = "0.11.0"
optional = true

[dependencies.stratisd_proc_macros]
version = "0.2.2"
optional = true

[dependencies.strum]
version = "0.28.0"
optional = true

[dependencies.strum_macros]
version = "0.28.0"
optional = true

[dependencies.tempfile]
version = "3.18.0"
optional = true

[dependencies.termios]
version = "0.3.3"
optional = true

[dependencies.tokio]
version = "1.45.1"
features = [
    "sync",
    "macros",
    "rt",
    "rt-multi-thread",
    "signal",
    "net",
    "time",
]
optional = true

[dependencies.uuid]
version = "1.8.0"
features = [
    "serde",
    "v4",
]
optional = true

[dependencies.zbus]
version = "5.12.0"
features = ["tokio"]
optional = true

[dev-dependencies.assert_cmd]
version = "2.0.8"

[dev-dependencies.assert_matches]
version = "1.5.0"

[dev-dependencies.loopdev-3]
version = "0.5.1"

[dev-dependencies.predicates]
version = "3.0.0"

[dev-dependencies.proptest]
version = "1.0.0"

[build-dependencies.bindgen]
version = "0.72.0"
optional = true

[build-dependencies.pkg-config]
version = "0.3.31"

[lints.clippy.all]
level = "deny"
priority = 0

[lints.clippy.cargo]
level = "deny"
priority = 1

[lints.clippy.cast_lossless]
level = "deny"
priority = 4

[lints.clippy.cast_possible_truncation]
level = "deny"
priority = 4

[lints.clippy.cast_precision_loss]
level = "deny"
priority = 4

[lints.clippy.cast_ptr_alignment]
level = "deny"
priority = 4

[lints.clippy.checked_conversions]
level = "deny"
priority = 4

[lints.clippy.copy_iterator]
level = "deny"
priority = 4

[lints.clippy.enum_glob_use]
level = "deny"
priority = 4

[lints.clippy.expl_impl_clone_on_copy]
level = "deny"
priority = 4

[lints.clippy.explicit_deref_methods]
level = "deny"
priority = 4

[lints.clippy.explicit_into_iter_loop]
level = "deny"
priority = 4

[lints.clippy.fn_params_excessive_bools]
level = "deny"
priority = 4

[lints.clippy.from_over_into]
level = "allow"
priority = 3

[lints.clippy.implicit_hasher]
level = "deny"
priority = 4

[lints.clippy.inefficient_to_string]
level = "deny"
priority = 4

[lints.clippy.inline_always]
level = "deny"
priority = 4

[lints.clippy.invalid_upcast_comparisons]
level = "deny"
priority = 4

[lints.clippy.large_digit_groups]
level = "deny"
priority = 4

[lints.clippy.large_stack_arrays]
level = "deny"
priority = 4

[lints.clippy.large_types_passed_by_value]
level = "deny"
priority = 4

[lints.clippy.linkedlist]
level = "deny"
priority = 4

[lints.clippy.macro_use_imports]
level = "deny"
priority = 4

[lints.clippy.manual_ok_or]
level = "deny"
priority = 4

[lints.clippy.match_bool]
level = "deny"
priority = 4

[lints.clippy.match_wild_err_arm]
level = "deny"
priority = 4

[lints.clippy.maybe_infinite_iter]
level = "deny"
priority = 4

[lints.clippy.multiple-crate-versions]
level = "allow"
priority = 2

[lints.clippy.mut_mut]
level = "deny"
priority = 4

[lints.clippy.needless_continue]
level = "deny"
priority = 4

[lints.clippy.option_option]
level = "deny"
priority = 4

[lints.clippy.range_minus_one]
level = "deny"
priority = 4

[lints.clippy.range_plus_one]
level = "deny"
priority = 4

[lints.clippy.ref_option_ref]
level = "deny"
priority = 4

[lints.clippy.same_functions_in_if_condition]
level = "deny"
priority = 4

[lints.clippy.string_add_assign]
level = "deny"
priority = 4

[lints.clippy.struct_excessive_bools]
level = "deny"
priority = 4

[lints.clippy.trait_duplication_in_bounds]
level = "deny"
priority = 4

[lints.clippy.trivially_copy_pass_by_ref]
level = "deny"
priority = 4

[lints.clippy.type_repetition_in_bounds]
level = "deny"
priority = 4

[lints.clippy.unicode_not_nfc]
level = "deny"
priority = 4

[lints.clippy.unnested_or_patterns]
level = "deny"
priority = 4

[lints.clippy.unreadable_literal]
level = "deny"
priority = 4

[lints.clippy.unsafe_derive_deserialize]
level = "deny"
priority = 4

[lints.clippy.unused_self]
level = "deny"
priority = 4

[lints.clippy.upper_case_acronyms]
level = "allow"
priority = 3

[lints.clippy.used_underscore_binding]
level = "deny"
priority = 4

[lints.clippy.verbose_bit_mask]
level = "deny"
priority = 4

[lints.clippy.wildcard_imports]
level = "deny"
priority = 4

[lints.rust.future_incompatible]
level = "deny"
priority = 1

[lints.rust.nonstandard_style]
level = "deny"
priority = 4

[lints.rust.rust_2018_idioms]
level = "deny"
priority = 3

[lints.rust.unused]
level = "deny"
priority = 2

[lints.rust.warnings]
level = "deny"
priority = 0
