[PATCH v2 0/5] client: repository: add individual component parameters

Thomas Lamprecht
2026-03-30T18:23:46Z

This is a follow-up to the v1 sent on 2026-03-23 [0], reworked based on
review feedback.

The compact repository URL format ([[auth-id@]server[:port]:]datastore)
can be cumbersome to work with when changing a single aspect of the
connection or when using API tokens. This series adds --server, --port,
--datastore, --auth-id, and --ns as separate CLI parameters alongside
the existing compound --repository URL.

Changes since v1:
- Split the single large commit into five: preparatory tests, core
struct + extraction logic, mechanical command migration, docs, and
PBS_NAMESPACE env var (new, addressing bug #5340 that Fabian pointed
out - thx!)
- CLI atom options now merge with PBS_* env vars per-field (CLI wins),
following the common convention where CLI flags override their
corresponding environment variable defaults, rather than treating CLI
and env as mutually exclusive layers (like e.g. borg, restic but also
others like postgresql's psql all do)
- Fixed error swallowing: --repository combined with atom options now
properly reports the mutual-exclusion error instead of falling through
to "unable to get repository"
- Fixed duplicate ns property in the restore command's #[api] block
- Removed bogus left-over hunk about @-escaping in the docs
- Added --server docs note about requiring --datastore (mix-and-match
still allowed from any valid source)
- Improved env var descriptions (no misleading "default" prefix)
- PBS_NAMESPACE works uniformly across all three client binaries
(proxmox-backup-client, proxmox-file-restore, proxmox-backup-debug)

[0] https://lore.proxmox.com/pbs-devel/20260323211400.2661765-1-t.lamprecht@proxmox.com/

Thomas Lamprecht (5):
client: repository: add tests for BackupRepository parsing
client: repository: add individual component parameters
client: migrate commands to flattened repository args
docs: document repository component options and env vars
client: repository: add PBS_NAMESPACE environment variable

docs/backup-client.rst | 64 +++++
pbs-client/src/backup_repo.rs | 305 +++++++++++++++++++++++-
pbs-client/src/tools/mod.rs | 318 ++++++++++++++++++++++---
proxmox-backup-client/src/benchmark.rs | 8 +-
proxmox-backup-client/src/catalog.rs | 26 +-
proxmox-backup-client/src/group.rs | 14 +-
proxmox-backup-client/src/main.rs | 101 ++++----
proxmox-backup-client/src/mount.rs | 17 +-
proxmox-backup-client/src/namespace.rs | 33 +--
proxmox-backup-client/src/snapshot.rs | 84 ++-----
proxmox-backup-client/src/task.rs | 20 +-
proxmox-file-restore/src/main.rs | 43 ++--
src/bin/proxmox_backup_debug/diff.rs | 23 +-
13 files changed, 808 insertions(+), 248 deletions(-)

--
2.47.3