[workspace] resolver = "2" members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"] [workspace.package] version = "2.5.0" edition = "2024" license = "MIT" authors = ["Nils Pukropp "] rust-version = "1.96" repository = "https://github.com/narrrl/proton-drive-linux" homepage = "https://github.com/narrrl/proton-drive-linux" readme = "README.md" keywords = ["proton", "drive", "fuse", "sync", "linux"] categories = ["filesystem", "command-line-utilities"] [workspace.dependencies] proton-sdk = { version = "0.7.0" } proton-drive-rs = { version = "0.7.0" } # Internal crates. pdfs-core = { path = "crates/pdfs-core" } pdfs-fuse = { path = "crates/pdfs-fuse" } tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "fs", "io-util", "time", "signal"] } serde = { version = "1", features = ["derive"] } serde_json = "1" base64 = "0.23" thiserror = "2" anyhow = "1" # Non-poisoning mutexes. A handler that panics while holding a lock must not # wedge every later acquisition of it: `Workers` catches the unwind to keep the # pool alive, and `std::sync::Mutex` would defeat that by poisoning the state # the recovered worker needs. parking_lot = "0.12" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } directories = "6" ignore = "0.4" sha2 = "0.11" # Google Takeout exports are zip sets; the importer reads their central # directories and streams entries out without extracting to disk first. zip = { version = "8", default-features = false, features = ["deflate"] } # Proton's photo duplicate detection is keyed on the plaintext SHA-1, so an # import has to speak SHA-1 whatever its age. sha1 = "0.11" # Thumbnail generation for photos the server has none for. Decoders only for the # formats a camera or phone actually produces — the rest of the crate's codecs # would be dead weight in the daemon. image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp", "gif", "tiff", "bmp", "rayon"] } rusqlite = { version = "0.40", features = ["bundled"] } # keyring 4 split into `keyring-core` plus per-platform stores. The libdbus # Secret Service store is the one keyring 3's `sync-secret-service` wrapped, and # with no `target` it matches items v3 wrote, so existing logins survive. keyring-core = "1" dbus-secret-service-keyring-store = { version = "1", features = ["crypto-rust"] } clap = { version = "4", features = ["derive"] } rpassword = "7" async-trait = "0.1" futures = "0.3" fuser = "0.18" libc = "0.2"