# SPDX-FileCopyrightText: The pasejo Authors
# SPDX-License-Identifier: 0BSD

[package]
name = "pasejo"
description = "passage re-implementation in Rust for teams"
version = "2026.6.14"
authors = ["Sebastian Hoß <seb@xn--ho-hia.de>"]
license = "0BSD"
edition = "2024"
rust-version = "1.92"
homepage = "https://github.com/metio/pasejo"
repository = "https://github.com/metio/pasejo"
keywords = ["password", "manager", "age", "passage", "pass"]
categories = ["command-line-utilities"]
readme = "README.md"
exclude = [
    ".github/*",
    "dev/*",
    "docs/*",
    "tests/*",
    "vhs/*",
]

[features]
default = []

[dependencies]
age = { version = "0.11.3", features = ["armor", "cli-common", "plugin", "ssh"] }
anyhow = { version = "1.0.102" }
arboard = { version = "3.6.1", default-features = false, features = ["wayland-data-control"] }
clap = { version = "4.6.1", features = ["derive"] }
clap_complete = { version = "4.6.5", features = ["unstable-dynamic"] }
clap-verbosity-flag = { version = "3.0.4" }
ctrlc = { version = "3.5.2" }
directories = { version = "6.0.0" }
env_logger = { version = "0.11.10" }
human-panic = { version = "2.0.8" }
i18n-embed = { version = "0.16", features = ["fluent-system", "desktop-requester"] }
i18n-embed-fl = { version = "0.10" }
log = { version = "0.4.32" }
image = { version = "0.25.10" }
inquire = { version = "0.9.4", features = ["editor"] }
notify-rust = { version = "4.17.0" }
otp-std = { version = "0.2.3", features = ["auth", "sha2", "unsafe-length"] }
passwords = { version = "3.1.16" }
qr2term = { version = "0.3.3" }
regex = { version = "1.12.4" }
rqrr = { version = "0.10.1" }
# `debug-embed` makes rust-embed embed the i18n/ files into the binary in
# debug builds too. Without it, every binary spawn reads the .ftl files
# (and walks the i18n/ folder) from disk; trycmd spawns a fresh process
# per .md case, so the per-spawn filesystem cost dominates the suite
# runtime. Release builds embed regardless, so this only affects tests
# and `cargo run` development.
rust-embed = { version = "8.7", features = ["debug-embed"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = { version = "1.0.150" }
shlex = { version = "2.0.1" }
ssh-key = { version = "0.6.7", features = ["ed25519", "encryption"] }
termtree = { version = "1.0.0" }
toml = { version = "1.1.0" }
unic-langid = { version = "0.9" }
ureq = { version = "3.3.0" }
uuid = { version = "1.23.3", features = ["v7"] }
zeroize = { version = "1.8.2" }

[dev-dependencies]
assert_cmd = { version = "2.2.2" }
assert_fs = { version = "1.1.4" }
#mockall = { version = "0.13.1" }
predicates = "3.1.4"
regex = { version = "1.12.4" }
serial_test = { version = "3.5.0" }
ssh-key = { version = "0.6.7", features = ["ed25519", "rsa"] }
trycmd = { version = "1.2.0" }

[target.'cfg(unix)'.dev-dependencies]
rexpect = { version = "0.7.1" }

# Landlock is a Linux-only Linux Security Module (kernel 5.13+). It is used
# in the QR-code import path to fork a child process that restricts itself
# to deny all filesystem access before running the `image` + `rqrr` parser
# stack on attacker-controlled bytes. `libc` is needed for the `fork`,
# `pipe`, `waitpid`, and `_exit` syscalls the sandbox driver uses.
[target.'cfg(target_os = "linux")'.dependencies]
landlock = { version = "0.4.5" }
libc = { version = "0.2.186" }

[build-dependencies]
cc = "1.2.63"
