From 4adb574d7493a27424ba36c45061b8c199e3c569 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Mon, 16 May 2022 11:13:37 +0200 Subject: [PATCH] client: add completion callbacks for ns parameters Signed-off-by: Wolfgang Bumiller --- proxmox-backup-client/src/catalog.rs | 12 +++++++----- proxmox-backup-client/src/main.rs | 8 ++++++-- proxmox-backup-client/src/mount.rs | 9 ++++++--- proxmox-backup-client/src/namespace.rs | 17 +++++++++++++---- proxmox-backup-client/src/snapshot.rs | 13 +++++++++++-- 5 files changed, 43 insertions(+), 16 deletions(-) diff --git a/proxmox-backup-client/src/catalog.rs b/proxmox-backup-client/src/catalog.rs index cecdf284..e5048af4 100644 --- a/proxmox-backup-client/src/catalog.rs +++ b/proxmox-backup-client/src/catalog.rs @@ -15,11 +15,11 @@ use pbs_tools::crypt_config::CryptConfig; use pbs_tools::json::required_string_param; use crate::{ - complete_backup_snapshot, complete_group_or_snapshot, complete_pxar_archive_name, - complete_repository, connect, crypto_parameters, decrypt_key, dir_or_last_from_group, - extract_repository_from_value, format_key_source, optional_ns_param, record_repository, - BackupDir, BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader, DynamicIndexReader, - IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA, + complete_backup_snapshot, complete_group_or_snapshot, complete_namespace, + complete_pxar_archive_name, complete_repository, connect, crypto_parameters, decrypt_key, + dir_or_last_from_group, extract_repository_from_value, format_key_source, optional_ns_param, + record_repository, BackupDir, BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader, + DynamicIndexReader, IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA, }; #[api( @@ -265,12 +265,14 @@ pub fn catalog_mgmt_cli() -> CliCommandMap { let catalog_shell_cmd_def = CliCommand::new(&API_METHOD_CATALOG_SHELL) .arg_param(&["snapshot", "archive-name"]) .completion_cb("repository", complete_repository) + .completion_cb("ns", complete_namespace) .completion_cb("archive-name", complete_pxar_archive_name) .completion_cb("snapshot", complete_group_or_snapshot); let catalog_dump_cmd_def = CliCommand::new(&API_METHOD_DUMP_CATALOG) .arg_param(&["snapshot"]) .completion_cb("repository", complete_repository) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_backup_snapshot); CliCommandMap::new() diff --git a/proxmox-backup-client/src/main.rs b/proxmox-backup-client/src/main.rs index b82746e5..073b660e 100644 --- a/proxmox-backup-client/src/main.rs +++ b/proxmox-backup-client/src/main.rs @@ -32,8 +32,8 @@ use pbs_client::catalog_shell::Shell; use pbs_client::tools::{ complete_archive_name, complete_auth_id, complete_backup_group, complete_backup_snapshot, complete_backup_source, complete_chunk_size, complete_group_or_snapshot, - complete_img_archive_name, complete_pxar_archive_name, complete_repository, connect, - connect_rate_limited, extract_repository_from_value, + complete_img_archive_name, complete_namespace, complete_pxar_archive_name, complete_repository, + connect, connect_rate_limited, extract_repository_from_value, key_source::{ crypto_parameters, format_key_source, get_encryption_key_password, KEYFD_SCHEMA, KEYFILE_SCHEMA, MASTER_PUBKEY_FD_SCHEMA, MASTER_PUBKEY_FILE_SCHEMA, @@ -1638,6 +1638,7 @@ fn main() { .completion_cb("keyfile", complete_file_name); let list_cmd_def = CliCommand::new(&API_METHOD_LIST_BACKUP_GROUPS) + .completion_cb("ns", complete_namespace) .completion_cb("repository", complete_repository); let garbage_collect_cmd_def = CliCommand::new(&API_METHOD_START_GARBAGE_COLLECTION) @@ -1646,12 +1647,14 @@ fn main() { let restore_cmd_def = CliCommand::new(&API_METHOD_RESTORE) .arg_param(&["snapshot", "archive-name", "target"]) .completion_cb("repository", complete_repository) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_group_or_snapshot) .completion_cb("archive-name", complete_archive_name) .completion_cb("target", complete_file_name); let prune_cmd_def = CliCommand::new(&API_METHOD_PRUNE) .arg_param(&["group"]) + .completion_cb("ns", complete_namespace) .completion_cb("group", complete_backup_group) .completion_cb("repository", complete_repository); @@ -1669,6 +1672,7 @@ fn main() { let change_owner_cmd_def = CliCommand::new(&API_METHOD_CHANGE_BACKUP_OWNER) .arg_param(&["group", "new-owner"]) + .completion_cb("ns", complete_namespace) .completion_cb("group", complete_backup_group) .completion_cb("new-owner", complete_auth_id) .completion_cb("repository", complete_repository); diff --git a/proxmox-backup-client/src/mount.rs b/proxmox-backup-client/src/mount.rs index 89130027..760b05ac 100644 --- a/proxmox-backup-client/src/mount.rs +++ b/proxmox-backup-client/src/mount.rs @@ -29,9 +29,10 @@ use pbs_tools::crypt_config::CryptConfig; use pbs_tools::json::required_string_param; use crate::{ - complete_group_or_snapshot, complete_img_archive_name, complete_pxar_archive_name, - complete_repository, connect, dir_or_last_from_group, extract_repository_from_value, - optional_ns_param, record_repository, BufferedDynamicReadAt, REPO_URL_SCHEMA, + complete_group_or_snapshot, complete_img_archive_name, complete_namespace, + complete_pxar_archive_name, complete_repository, connect, dir_or_last_from_group, + extract_repository_from_value, optional_ns_param, record_repository, BufferedDynamicReadAt, + REPO_URL_SCHEMA, }; #[sortable] @@ -129,6 +130,7 @@ pub fn mount_cmd_def() -> CliCommand { CliCommand::new(&API_METHOD_MOUNT) .arg_param(&["snapshot", "archive-name", "target"]) .completion_cb("repository", complete_repository) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_group_or_snapshot) .completion_cb("archive-name", complete_pxar_archive_name) .completion_cb("target", complete_file_name) @@ -138,6 +140,7 @@ pub fn map_cmd_def() -> CliCommand { CliCommand::new(&API_METHOD_MAP) .arg_param(&["snapshot", "archive-name"]) .completion_cb("repository", complete_repository) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_group_or_snapshot) .completion_cb("archive-name", complete_img_archive_name) } diff --git a/proxmox-backup-client/src/namespace.rs b/proxmox-backup-client/src/namespace.rs index aa34b5c8..ce3f113b 100644 --- a/proxmox-backup-client/src/namespace.rs +++ b/proxmox-backup-client/src/namespace.rs @@ -9,7 +9,10 @@ use proxmox_router::cli::{ }; use proxmox_schema::api; -use crate::{connect, extract_repository_from_value, optional_ns_param, record_repository}; +use crate::{ + complete_namespace, connect, extract_repository_from_value, optional_ns_param, + record_repository, +}; #[api( input: { @@ -157,14 +160,20 @@ pub fn cli_map() -> CliCommandMap { CliCommandMap::new() .insert( "list", - CliCommand::new(&API_METHOD_LIST_NAMESPACES).arg_param(&["ns"]), + CliCommand::new(&API_METHOD_LIST_NAMESPACES) + .arg_param(&["ns"]) + .completion_cb("ns", complete_namespace), ) .insert( "create", - CliCommand::new(&API_METHOD_CREATE_NAMESPACE).arg_param(&["ns"]), + CliCommand::new(&API_METHOD_CREATE_NAMESPACE) + .arg_param(&["ns"]) + .completion_cb("ns", complete_namespace), ) .insert( "delete", - CliCommand::new(&API_METHOD_DELETE_NAMESPACE).arg_param(&["ns"]), + CliCommand::new(&API_METHOD_DELETE_NAMESPACE) + .arg_param(&["ns"]) + .completion_cb("ns", complete_namespace), ) } diff --git a/proxmox-backup-client/src/snapshot.rs b/proxmox-backup-client/src/snapshot.rs index 74d0a6a5..c678e059 100644 --- a/proxmox-backup-client/src/snapshot.rs +++ b/proxmox-backup-client/src/snapshot.rs @@ -16,8 +16,9 @@ use pbs_tools::json::required_string_param; use crate::{ api_datastore_list_snapshots, complete_backup_group, complete_backup_snapshot, - complete_repository, connect, crypto_parameters, extract_repository_from_value, - optional_ns_param, record_repository, BackupDir, KEYFD_SCHEMA, KEYFILE_SCHEMA, REPO_URL_SCHEMA, + complete_namespace, complete_repository, connect, crypto_parameters, + extract_repository_from_value, optional_ns_param, record_repository, BackupDir, KEYFD_SCHEMA, + KEYFILE_SCHEMA, REPO_URL_SCHEMA, }; fn snapshot_args(ns: &BackupNamespace, snapshot: &BackupDir) -> Result { @@ -480,12 +481,14 @@ fn protected_cli() -> CliCommandMap { "show", CliCommand::new(&API_METHOD_SHOW_PROTECTION) .arg_param(&["snapshot"]) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_backup_snapshot), ) .insert( "update", CliCommand::new(&API_METHOD_UPDATE_PROTECTION) .arg_param(&["snapshot", "protected"]) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_backup_snapshot), ) } @@ -496,12 +499,14 @@ fn notes_cli() -> CliCommandMap { "show", CliCommand::new(&API_METHOD_SHOW_NOTES) .arg_param(&["snapshot"]) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_backup_snapshot), ) .insert( "update", CliCommand::new(&API_METHOD_UPDATE_NOTES) .arg_param(&["snapshot", "notes"]) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_backup_snapshot), ) } @@ -514,6 +519,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap { "list", CliCommand::new(&API_METHOD_LIST_SNAPSHOTS) .arg_param(&["group"]) + .completion_cb("ns", complete_namespace) .completion_cb("group", complete_backup_group) .completion_cb("repository", complete_repository), ) @@ -521,6 +527,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap { "files", CliCommand::new(&API_METHOD_LIST_SNAPSHOT_FILES) .arg_param(&["snapshot"]) + .completion_cb("ns", complete_namespace) .completion_cb("repository", complete_repository) .completion_cb("snapshot", complete_backup_snapshot), ) @@ -528,6 +535,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap { "forget", CliCommand::new(&API_METHOD_FORGET_SNAPSHOTS) .arg_param(&["snapshot"]) + .completion_cb("ns", complete_namespace) .completion_cb("repository", complete_repository) .completion_cb("snapshot", complete_backup_snapshot), ) @@ -535,6 +543,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap { "upload-log", CliCommand::new(&API_METHOD_UPLOAD_LOG) .arg_param(&["snapshot", "logfile"]) + .completion_cb("ns", complete_namespace) .completion_cb("snapshot", complete_backup_snapshot) .completion_cb("logfile", complete_file_name) .completion_cb("keyfile", complete_file_name)