]> git.proxmox.com Git - proxmox-backup.git/commitdiff
src/bin/proxmox-backup-client.rs: sort list results
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 6 Mar 2019 06:20:51 +0000 (07:20 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 6 Mar 2019 06:20:51 +0000 (07:20 +0100)
src/bin/proxmox-backup-client.rs

index ec804a07c23214fd0f54a4f948cc5b0cacbb3492..5252b0f87fa1a6bec5b3f11bdc21bf8d3d466bd6 100644 (file)
@@ -141,10 +141,24 @@ fn list_backup_groups(
 
     let path = format!("api2/json/admin/datastore/{}/groups", repo.store);
 
-    let result = client.get(&path)?;
+    let mut result = client.get(&path)?;
 
     // fixme: implement and use output formatter instead ..
-    let list = result["data"].as_array().unwrap();
+    let list = result["data"].as_array_mut().unwrap();
+
+    list.sort_unstable_by(|a, b| {
+        let a_id = a["backup-id"].as_str().unwrap();
+        let a_backup_type = a["backup-type"].as_str().unwrap();
+        let b_id = b["backup-id"].as_str().unwrap();
+        let b_backup_type = b["backup-type"].as_str().unwrap();
+
+        let type_order = a_backup_type.cmp(b_backup_type);
+        if type_order == std::cmp::Ordering::Equal {
+            a_id.cmp(b_id)
+        } else {
+            type_order
+        }
+    });
 
     for item in list {
 
@@ -163,7 +177,7 @@ fn list_backup_groups(
                 v.as_str().unwrap().to_owned()
             }).collect();
 
-        println!("{} | {} | {} | {}", path, last_backup.format("%c"),
+        println!("{:20} | {} | {:5} | {}", path, last_backup.format("%c"),
                  backup_count, tools::join(&files, ' '));
     }