`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.
AUR packages
Source of truth for the three AUR packages of this project. Each subdirectory is
the full content of one AUR git repository (pkgbase = directory name):
| Directory | What it does | AUR repository |
|---|---|---|
proton-drive-for-linux |
Builds the latest tagged release from source | ssh://aur@aur.archlinux.org/proton-drive-for-linux.git |
proton-drive-for-linux-git |
Builds main from git |
ssh://aur@aur.archlinux.org/proton-drive-for-linux-git.git |
proton-drive-for-linux-bin |
Installs the binaries from the GitHub release | ssh://aur@aur.archlinux.org/proton-drive-for-linux-bin.git |
The three packages conflict with each other and with the in-tree
packaging/PKGBUILD package (proton-drive-linux), and every one of them
provides proton-drive-for-linux, proton-drive-linux, and pdfs.
Each directory tracks only PKGBUILD, .SRCINFO, .gitignore, LICENSE and
proton-drive.install (a link to packaging/proton-drive.install, copied as a file on push)
(the 0BSD license of the packaging sources, per
RFC40); the
.gitignore ignores everything else so downloaded sources, src/, pkg/, and
built packages never reach the AUR.
Releasing a new version
.github/workflows/aur.yml does this automatically:
- On a release tag,
release.ymlcalls it after the GitHub release is published. It runs./update.sh <version>, pushes all three packages with./push.sh, and commits the updated recipes back tomainaschore(aur): update packages to <version>. - On a push to
mainthat changesproton-drive-for-linux-git/, it regenerates that package's.SRCINFOand pushes only the -git package. - By hand, run the workflow from the Actions tab. Give a version to publish a release, or leave it empty to publish only the -git package.
It needs the AUR_SSH_PRIVATE_KEY repository secret: a private key whose public
half is registered with the AUR account.
To do the same by hand:
- Tag and publish the upstream release, so the source tarball and the
proton-drive-linux-<version>-x86_64.tar.gzrelease asset exist. - Run
./update.sh <version>— it rewritespkgver, resetspkgrel=1, refreshes the checksums of the release-based packages, and regenerates every.SRCINFO. - Build and inspect the packages in a clean chroot:
cd proton-drive-for-linux && pkgctl build --clean(needsdevtools). - Commit here, then publish with
./push.sh(or./push.sh proton-drive-for-linux-binfor a single package).
proton-drive-for-linux-git carries a pkgver() function, so its pkgver is
computed at build time; do not push a commit that only bumps it. This is why new
commits on main do not trigger an AUR push.
Requirements for pushing
An SSH key registered with the AUR account and an entry in ~/.ssh/config:
Host aur.archlinux.org
IdentityFile ~/.ssh/aur
User aur
push.sh creates a scratch clone of the AUR repository, copies the tracked
files over it, commits, and pushes to master.