src/bin/proxmox-backup-client.rs: new completion helper for snapshots
This commit is contained in:
		| @ -1055,15 +1055,9 @@ fn complete_backup_group(_arg: &str, param: &HashMap<String, String>) -> Vec<Str | ||||
|  | ||||
| fn complete_group_or_snapshot(arg: &str, param: &HashMap<String, String>) -> Vec<String> { | ||||
|  | ||||
|     let mut result = vec![]; | ||||
|  | ||||
|      let repo = match extract_repository_from_map(param) { | ||||
|         Some(v) => v, | ||||
|         _ => return result, | ||||
|     }; | ||||
|  | ||||
|     if arg.matches('/').count() < 2 { | ||||
|         let groups = complete_backup_group(arg, param); | ||||
|         let mut result = vec![]; | ||||
|         for group in groups { | ||||
|             result.push(group.to_string()); | ||||
|             result.push(format!("{}/", group)); | ||||
| @ -1071,13 +1065,19 @@ fn complete_group_or_snapshot(arg: &str, param: &HashMap<String, String>) -> Vec | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     let mut parts = arg.split('/'); | ||||
|     let query = tools::json_object_to_query(json!({ | ||||
|         "backup-type": parts.next().unwrap(), | ||||
|         "backup-id": parts.next().unwrap(), | ||||
|     })).unwrap(); | ||||
|     complete_backup_snapshot(arg, param) | ||||
| } | ||||
|  | ||||
|     let path = format!("api2/json/admin/datastore/{}/snapshots?{}", repo.store(), query); | ||||
| fn complete_backup_snapshot(arg: &str, param: &HashMap<String, String>) -> Vec<String> { | ||||
|  | ||||
|     let mut result = vec![]; | ||||
|  | ||||
|     let repo = match extract_repository_from_map(param) { | ||||
|         Some(v) => v, | ||||
|         _ => return result, | ||||
|     }; | ||||
|  | ||||
|     let path = format!("api2/json/admin/datastore/{}/snapshots", repo.store()); | ||||
|  | ||||
|     let data = try_get(&repo, &path); | ||||
|  | ||||
| @ -1471,7 +1471,7 @@ fn main() { | ||||
|                     StringSchema::new("Path to encryption key. All data will be encrypted using this key.")) | ||||
|         )) | ||||
|         .arg_param(vec!["snapshot", "logfile"]) | ||||
|         .completion_cb("snapshot", complete_group_or_snapshot) | ||||
|         .completion_cb("snapshot", complete_backup_snapshot) | ||||
|         .completion_cb("logfile", tools::complete_file_name) | ||||
|         .completion_cb("keyfile", tools::complete_file_name) | ||||
|         .completion_cb("repository", complete_repository); | ||||
| @ -1506,7 +1506,7 @@ fn main() { | ||||
|         )) | ||||
|         .arg_param(vec!["snapshot"]) | ||||
|         .completion_cb("repository", complete_repository) | ||||
|         .completion_cb("snapshot", complete_group_or_snapshot); | ||||
|         .completion_cb("snapshot", complete_backup_snapshot); | ||||
|  | ||||
|     let garbage_collect_cmd_def = CliCommand::new( | ||||
|         ApiMethod::new( | ||||
| @ -1554,7 +1554,7 @@ We do not extraxt '.pxar' archives when writing to stdandard output. | ||||
|         )) | ||||
|         .arg_param(vec!["snapshot"]) | ||||
|         .completion_cb("repository", complete_repository) | ||||
|         .completion_cb("snapshot", complete_group_or_snapshot); | ||||
|         .completion_cb("snapshot", complete_backup_snapshot); | ||||
|  | ||||
|     let prune_cmd_def = CliCommand::new( | ||||
|         ApiMethod::new( | ||||
|  | ||||
		Reference in New Issue
	
	Block a user