]> git.proxmox.com Git - proxmox-offline-mirror.git/commitdiff
wizard: add option to (de)select all mirrors
authorFabian Grünbichler <f.gruenbichler@proxmox.com>
Thu, 8 Sep 2022 11:04:03 +0000 (13:04 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Thu, 8 Sep 2022 11:04:03 +0000 (13:04 +0200)
else it gets a bit repetitive for the common case.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
src/bin/proxmox-offline-mirror.rs

index 48c1c3db8fc886a89b2ef745a6767afd45930fc0..4cad722d028337f6645a4537825acae00e048ecb 100644 (file)
@@ -472,7 +472,9 @@ fn action_add_medium(config: &SectionConfigData) -> Result<MediaConfig, Error> {
 
     enum Action {
         SelectMirror,
+        SelectAllMirrors,
         DeselectMirror,
+        DeselectAllMirrors,
         Proceed,
     }
 
@@ -482,6 +484,7 @@ fn action_add_medium(config: &SectionConfigData) -> Result<MediaConfig, Error> {
             println!("No mirrors selected for inclusion on medium so far.");
             vec![
                 (Action::SelectMirror, "Add mirror to selection."),
+                (Action::SelectAllMirrors, "Add all mirrors to selection."),
                 (Action::Proceed, "Proceed"),
             ]
         } else {
@@ -494,12 +497,21 @@ fn action_add_medium(config: &SectionConfigData) -> Result<MediaConfig, Error> {
                 println!("No more mirrors available for selection!");
                 vec![
                     (Action::DeselectMirror, "Remove mirror from selection."),
+                    (
+                        Action::DeselectAllMirrors,
+                        "Remove all mirrors from selection.",
+                    ),
                     (Action::Proceed, "Proceed"),
                 ]
             } else {
                 vec![
                     (Action::SelectMirror, "Add mirror to selection."),
+                    (Action::SelectAllMirrors, "Add all mirrors to selection."),
                     (Action::DeselectMirror, "Remove mirror from selection."),
+                    (
+                        Action::DeselectAllMirrors,
+                        "Remove all mirrors from selection.",
+                    ),
                     (Action::Proceed, "Proceed"),
                 ]
             }
@@ -530,6 +542,10 @@ fn action_add_medium(config: &SectionConfigData) -> Result<MediaConfig, Error> {
                     .collect();
                 selected_mirrors.push(selected);
             }
+            Action::SelectAllMirrors => {
+                selected_mirrors.extend_from_slice(&available_mirrors);
+                available_mirrors.truncate(0);
+            }
             Action::DeselectMirror => {
                 if selected_mirrors.is_empty() {
                     println!("No mirrors selected (yet).");
@@ -550,6 +566,10 @@ fn action_add_medium(config: &SectionConfigData) -> Result<MediaConfig, Error> {
                     .collect();
                 available_mirrors.push(selected);
             }
+            Action::DeselectAllMirrors => {
+                available_mirrors.extend_from_slice(&selected_mirrors);
+                selected_mirrors.truncate(0);
+            }
             Action::Proceed => {
                 break;
             }