# -*- coding: utf-8 -*-

[workspace]
members = [
    "letmein",
    "letmein-conf",
    "letmein-fwproto",
    "letmein-proto",
    "letmein-seccomp",
    "letmein-systemd",
    "letmeind",
    "letmeinfwd",
    "tests/stubs/nft",
]
resolver = "3"

[workspace.package]
version = "12.5.0"
edition = "2024"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
authors = [ "Michael Büsch <m@bues.ch>" ]
homepage = "https://bues.ch/h/letmein"
repository = "https://github.com/mbuesch/letmein"
readme = "README.md"
categories = [ "authentication", "network-programming", "command-line-utilities", "cryptography" ]
keywords = [ "port-knocking", "port", "knock", "firewall", "nftables" ]

[workspace.dependencies]
anyhow = "1"
clap = { version = "4", default-features = false, features = [ "std", "help", "usage", "error-context", "derive" ] }
ctutils = "0.4"
dns-lookup = "3"
getrandom = "0.4"
hickory-resolver = "0.26"
hmac = "0.13"
libc = "0.2"
nftables = "0.6"
nix = { version = "0.31", default-features = false }
sd-notify = "0.5"
seccompiler = "0.5"
sha3 = "0.12"
tokio = "1"

letmein-conf = { version = "12", path = "./letmein-conf" }
letmein-fwproto = { version = "12", path = "./letmein-fwproto" }
letmein-proto = { version = "12", path = "./letmein-proto" }
letmein-seccomp = { version = "12", path = "./letmein-seccomp" }
letmein-systemd = { version = "12", path = "./letmein-systemd" }

[workspace.lints.clippy]
# Lints from `cargo` group
cargo = "warn"
multiple-crate-versions = { level = "allow", priority = 1 }

# Lints from `pedantic` group
pedantic = "warn"
default_trait_access = { level = "allow", priority = 1 }
missing-errors-doc = { level = "allow", priority = 1 }
missing-panics-doc = { level = "allow", priority = 1 }
similar-names = { level = "allow", priority = 1 }
struct-excessive-bools = { level = "allow", priority = 1 }

# Lints from `restriction` group
clone_on_ref_ptr = "warn"
dbg_macro = "warn"
mem_forget = "warn"
precedence_bits = "warn"
todo = "warn"
try_err = "warn"
undocumented_unsafe_blocks = "warn"
unimplemented = "warn"
unseparated_literal_suffix = "warn"
unused_result_ok = "warn"
unused_trait_names = "warn"

[profile.dev]
debug = "limited"
panic = "abort"

[profile.release]
opt-level = "z"
lto = "fat"
panic = "abort"
strip = "symbols"
overflow-checks = true

# vim: ts=4 sw=4 expandtab
