mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-14 09:27:04 +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.
88 lines
3.3 KiB
Bash
88 lines
3.3 KiB
Bash
# Maintainer: Nils Pukropp <contact@narl.io>
|
|
#
|
|
# Local-build PKGBUILD. Builds the proton-drive-linux workspace from the
|
|
# checkout this file lives in: this is NOT a source-fetch package, it compiles
|
|
# the working tree in place. The Proton SDK is unpublished and comes from its
|
|
# GitHub repo (pinned by Cargo.lock), so the build needs network access — no
|
|
# sibling checkout required any more.
|
|
#
|
|
# Build + install: cd packaging && makepkg -fi
|
|
|
|
pkgname=proton-drive-linux
|
|
pkgver=3.7.0
|
|
pkgrel=1
|
|
pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray"
|
|
arch=('x86_64')
|
|
url="https://proton-drive.narl.io"
|
|
license=('MIT')
|
|
depends=('fuse3' 'gtk4' 'libadwaita' 'webkitgtk-6.0' 'perl-image-exiftool')
|
|
makedepends=('cargo' 'git' 'gettext')
|
|
provides=('pdfs')
|
|
# Files-on-demand mount + keyring need these at runtime.
|
|
optdepends=('gnome-keyring: credential storage via Secret Service'
|
|
'ffmpeg: video thumbnails'
|
|
'iso-codes: country names in your language under Places'
|
|
'xdg-utils: "Open folder" action from the tray'
|
|
'fzf: live search-as-you-type launcher (pdfs-prompt --fzf)'
|
|
'foot: terminal for pdfs-prompt --fzf started from a keybinding')
|
|
options=('!lto' '!debug')
|
|
# Stops the running daemon before removal, so the mount stops mirroring deletes.
|
|
install=proton-drive.install
|
|
|
|
# Built in place from the checkout; nothing to fetch or checksum.
|
|
source=()
|
|
sha256sums=()
|
|
|
|
# Absolute path to the workspace root (packaging/ lives directly under it).
|
|
_workspace="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
pkgver() {
|
|
cd "$_workspace"
|
|
local v
|
|
v=$(grep -m1 '^version' Cargo.toml | cut -d'"' -f2)
|
|
printf '%s' "${v:-0.1.0}"
|
|
}
|
|
|
|
build() {
|
|
cd "$_workspace"
|
|
export RUSTUP_TOOLCHAIN=stable
|
|
export CARGO_TARGET_DIR="$_workspace/target"
|
|
# `--locked` not `--frozen`: the lock is authoritative, but cargo must still be
|
|
# allowed to fetch the git-sourced SDK.
|
|
cargo build --release --locked \
|
|
--bin pdfs \
|
|
--bin pdfs-tray \
|
|
--bin pdfs-app \
|
|
--bin pdfs-prompt
|
|
}
|
|
|
|
package() {
|
|
cd "$_workspace"
|
|
local rel="target/release"
|
|
|
|
install -Dm755 "$rel/pdfs" "$pkgdir/usr/bin/pdfs"
|
|
install -Dm755 "$rel/pdfs-tray" "$pkgdir/usr/bin/pdfs-tray"
|
|
install -Dm755 "$rel/pdfs-app" "$pkgdir/usr/bin/pdfs-app"
|
|
install -Dm755 "$rel/pdfs-prompt" "$pkgdir/usr/bin/pdfs-prompt"
|
|
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux.desktop" \
|
|
"$pkgdir/usr/share/applications/io.narl.proton-drive-linux.desktop"
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux-tray.desktop" \
|
|
"$pkgdir/etc/xdg/autostart/io.narl.proton-drive-linux-tray.desktop"
|
|
install -Dm644 "packaging/io.narl.proton-drive-linux.svg" \
|
|
"$pkgdir/usr/share/icons/hicolor/scalable/apps/io.narl.proton-drive-linux.svg"
|
|
|
|
# systemd user service that runs the auto-mount daemon. Enabled per-user by
|
|
# the GUI on login (`systemctl --user enable --now proton-drive.service`).
|
|
install -Dm644 "packaging/proton-drive.service" \
|
|
"$pkgdir/usr/lib/systemd/user/proton-drive.service"
|
|
|
|
# Translations: compiled from po/ into /usr/share/locale.
|
|
po/build.sh "$pkgdir/usr/share/locale"
|
|
|
|
# Shell completion for bash, zsh and fish.
|
|
packaging/completions.sh "$rel/pdfs" "$pkgdir/usr/share"
|
|
|
|
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
|
}
|