mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-12 17:27:03 +01:00
`pdfs completions <shell>` prints a completion script for bash, zsh, fish, elvish or PowerShell, built on clap_complete's dynamic engine: on Tab the shell calls `pdfs` back, which completes commands and options and also the values the running service knows, each with a description: paths in My files, synced-folder and queue ids, computers, trash, albums, items shared with me, invitations, bookmarks, conflict copies, and a file's versions or a share's members and public link once its path is typed. A completer that gets no answer from the service within two seconds offers nothing rather than hanging the prompt. Listings that ask Proton are kept for 30 s in $XDG_RUNTIME_DIR (0600), so repeated Tabs do not wait again. Completion is triggered by PDFS_COMPLETE rather than clap's generic COMPLETE, because the same binary runs the daemon. Share roles are now checked by the CLI before the request. The package recipes install the bash, zsh and fish scripts via packaging/completions.sh.
80 lines
3.2 KiB
TOML
80 lines
3.2 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"]
|
|
|
|
[workspace.package]
|
|
version = "3.7.0"
|
|
edition = "2024"
|
|
license = "MIT"
|
|
authors = ["Nils Pukropp <contact@narl.io>"]
|
|
rust-version = "1.96"
|
|
repository = "https://github.com/narrrl/proton-drive-linux"
|
|
homepage = "https://proton-drive.narl.io"
|
|
readme = "README.md"
|
|
keywords = ["proton", "drive", "fuse", "sync", "linux"]
|
|
categories = ["filesystem", "command-line-utilities"]
|
|
|
|
[workspace.dependencies]
|
|
proton-sdk = { version = "0.11.0" }
|
|
proton-drive-rs = { version = "0.11.0" }
|
|
chrono = { version = "0.4", default-features = false, features = ["std"] }
|
|
|
|
# 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"
|
|
zeroize = "1"
|
|
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.13"
|
|
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 = "9", 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.41", 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"] }
|
|
# `unstable-dynamic`: Tab calls `pdfs` back, so arguments complete from the
|
|
# running service. Only `pdfs-cli/src/complete.rs` uses it.
|
|
clap_complete = { version = "4.6", features = ["unstable-dynamic"] }
|
|
rpassword = "7"
|
|
async-trait = "0.1"
|
|
futures = "0.3"
|
|
fuser = "0.18"
|
|
libc = "0.2"
|
|
|
|
[profile.release]
|
|
# No package ships a separate debug package (the PKGBUILD sets `!debug`, the
|
|
# RPM spec sets `debug_package` to nil), and the unstripped binaries weighed
|
|
# 43 MB (`pdfs`), 24 MB (`pdfs-app`) and 12 MB (`pdfs-tray`).
|
|
strip = "symbols"
|
|
# Off on purpose: LTO has broken GTK links for this workspace, which is why
|
|
# the packages turn it off as well.
|
|
lto = false
|
|
# `Workers` and the thumbnail build catch panics to keep the daemon alive, so
|
|
# unwinding must stay on.
|
|
panic = "unwind"
|