From 29ac543eb576faf24d8665e9739ec8ff6bb895d3 Mon Sep 17 00:00:00 2001 From: Adam Leventhal Date: Wed, 3 May 2023 11:42:38 -0700 Subject: [PATCH] CLI: simple handling of paginated operations (#454) --- progenitor-impl/src/cli.rs | 48 +- progenitor-impl/tests/output/nexus-cli.out | 840 +++++++++++++-------- 2 files changed, 584 insertions(+), 304 deletions(-) diff --git a/progenitor-impl/src/cli.rs b/progenitor-impl/src/cli.rs index 7ce6b4e..6c5721e 100644 --- a/progenitor-impl/src/cli.rs +++ b/progenitor-impl/src/cli.rs @@ -452,6 +452,43 @@ impl Generator { crate::method::OperationResponseType::Upgrade => quote! { todo!() }, }; + let execute_and_output = match method.dropshot_paginated { + None => { + quote! { + let result = request.send().await; + + match result { + Ok(r) => { + #success_output + } + Err(r) => { + #error_output + } + } + } + } + Some(_) => { + quote! { + let mut stream = request.stream(); + + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + #error_output; + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } + } + } + } + } + }; + let execute_fn = quote! { pub async fn #fn_name(&self, matches: &clap::ArgMatches) // -> @@ -466,16 +503,7 @@ impl Generator { .#fn_name(matches, &mut request) .unwrap(); - let result = request.send().await; - - match result { - Ok(r) => { - #success_output - } - Err(r) => { - #error_output - } - } + #execute_and_output } }; diff --git a/progenitor-impl/tests/output/nexus-cli.out b/progenitor-impl/tests/output/nexus-cli.out index 6fcc858..f356ca7 100644 --- a/progenitor-impl/tests/output/nexus-cli.out +++ b/progenitor-impl/tests/output/nexus-cli.out @@ -5681,13 +5681,19 @@ impl Cli { } self.over.execute_group_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -5813,13 +5819,19 @@ impl Cli { self.over .execute_organization_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -5973,13 +5985,19 @@ impl Cli { self.over .execute_project_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -6111,13 +6129,19 @@ impl Cli { } self.over.execute_disk_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -6246,13 +6270,19 @@ impl Cli { self.over .execute_disk_metrics_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -6276,13 +6306,19 @@ impl Cli { } self.over.execute_image_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -6394,13 +6430,19 @@ impl Cli { self.over .execute_instance_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -6538,13 +6580,19 @@ impl Cli { self.over .execute_instance_disk_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -6698,13 +6746,19 @@ impl Cli { self.over .execute_instance_network_interface_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -7086,13 +7140,19 @@ impl Cli { self.over .execute_snapshot_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -7208,13 +7268,19 @@ impl Cli { } self.over.execute_vpc_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -7428,13 +7494,19 @@ impl Cli { self.over .execute_vpc_router_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -7608,13 +7680,19 @@ impl Cli { self.over .execute_vpc_router_route_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -7800,13 +7878,19 @@ impl Cli { self.over .execute_vpc_subnet_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -7988,13 +8072,19 @@ impl Cli { self.over .execute_vpc_subnet_list_network_interfaces(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8038,13 +8128,19 @@ impl Cli { } self.over.execute_role_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8094,13 +8190,19 @@ impl Cli { self.over .execute_session_me_groups(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8118,13 +8220,19 @@ impl Cli { self.over .execute_session_sshkey_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8270,13 +8378,19 @@ impl Cli { self.over .execute_certificate_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8362,13 +8476,19 @@ impl Cli { self.over .execute_physical_disk_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8384,13 +8504,19 @@ impl Cli { } self.over.execute_rack_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8424,13 +8550,19 @@ impl Cli { } self.over.execute_sled_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8470,13 +8602,19 @@ impl Cli { self.over .execute_sled_physical_disk_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8494,13 +8632,19 @@ impl Cli { self.over .execute_system_image_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8582,13 +8726,19 @@ impl Cli { self.over .execute_ip_pool_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8698,13 +8848,19 @@ impl Cli { self.over .execute_ip_pool_range_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8774,13 +8930,19 @@ impl Cli { self.over .execute_ip_pool_service_range_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8901,13 +9063,19 @@ impl Cli { } self.over.execute_saga_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -8941,13 +9109,19 @@ impl Cli { } self.over.execute_silo_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9043,13 +9217,19 @@ impl Cli { self.over .execute_silo_identity_provider_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9259,13 +9439,19 @@ impl Cli { self.over .execute_silo_users_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9307,13 +9493,19 @@ impl Cli { self.over .execute_system_user_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9347,13 +9539,19 @@ impl Cli { self.over .execute_timeseries_schema_get(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9369,13 +9567,19 @@ impl Cli { } self.over.execute_user_list(matches, &mut request).unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9401,13 +9605,19 @@ impl Cli { self.over .execute_disk_list_v1(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9525,13 +9735,19 @@ impl Cli { self.over .execute_instance_list_v1(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9669,13 +9885,19 @@ impl Cli { self.over .execute_instance_disk_list_v1(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -9941,13 +10163,19 @@ impl Cli { self.over .execute_organization_list_v1(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -10101,13 +10329,19 @@ impl Cli { self.over .execute_project_list_v1(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -10281,13 +10515,19 @@ impl Cli { self.over .execute_system_component_version_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -10305,13 +10545,19 @@ impl Cli { self.over .execute_update_deployments_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } } @@ -10401,13 +10647,19 @@ impl Cli { self.over .execute_system_update_list(matches, &mut request) .unwrap(); - let result = request.send().await; - match result { - Ok(r) => { - println!("success\n{:#?}", r) - } - Err(r) => { - println!("error\n{:#?}", r) + let mut stream = request.stream(); + loop { + match futures::TryStreamExt::try_next(&mut stream).await { + Err(r) => { + println!("error\n{:#?}", r); + break; + } + Ok(None) => { + break; + } + Ok(Some(value)) => { + println!("{:#?}", value); + } } } }