From 2cd4e3988796436e78c8929dc14319d908bf9f79 Mon Sep 17 00:00:00 2001
From: maheshrayas <maheshrayas@gmail.com>
Date: Tue, 19 Apr 2022 16:40:31 +1000
Subject: [PATCH] feat: Simplfy the table generation

---
 src/cluster.rs | 14 +++++++++++---
 src/main.rs    | 12 +++---------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/cluster.rs b/src/cluster.rs
index c5d96f9..75715c0 100644
--- a/src/cluster.rs
+++ b/src/cluster.rs
@@ -11,7 +11,10 @@ use serde_json::Value;
 use std::sync::Arc;
 use tokio::task::spawn;
 
-pub(crate) async fn get_cluster_resources(version: &str, val: Vec<Value>) -> Result<ClusterOP> {
+pub(crate) async fn get_cluster_resources(
+    version: &str,
+    val: Vec<Value>,
+) -> Result<Vec<TableDetails>> {
     let client = Client::try_default().await?;
     let current_config = kube::config::Kubeconfig::read().unwrap();
     info!(
@@ -19,7 +22,7 @@ pub(crate) async fn get_cluster_resources(version: &str, val: Vec<Value>) -> Res
         current_config.current_context.unwrap()
     );
     info!("Target apiversions v{}", version);
-    Ok(val
+    let join_handle: ClusterOP = val
         .into_iter()
         .map(|resource| {
             let arc_client = Arc::new(client.clone());
@@ -79,5 +82,10 @@ pub(crate) async fn get_cluster_resources(version: &str, val: Vec<Value>) -> Res
                 Ok(temp_table)
             })
         })
-        .collect())
+        .collect();
+    let mut v: Vec<TableDetails> = vec![];
+    for task in join_handle {
+        v.append(&mut task.await?.unwrap());
+    }
+    Ok(v)
 }
diff --git a/src/main.rs b/src/main.rs
index 9dc49ef..bbbb579 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -63,15 +63,12 @@ async fn main() -> anyhow::Result<()> {
 
     match cli.check_scrape_type() {
         Scrape::Cluster => {
-            let join_handle: ClusterOP = get_cluster_resources(version, val).await?;
+            let x = utils::VecTableDetails(get_cluster_resources(version, val).await?);
             match cli.output {
                 Output::Csv => {
                     let mut wtr = csv::Writer::from_path("./deprecated-list.csv")?;
                     generate_csv_header(&mut wtr, "Filename")?;
-                    for task in join_handle {
-                        let x: VecTableDetails = utils::VecTableDetails(task.await?.unwrap());
-                        x.generate_csv(&mut wtr)?;
-                    }
+                    x.generate_csv(&mut wtr)?;
                     wtr.flush()?;
                     info!(
                         "deprecated-list.csv written at location {}",
@@ -84,10 +81,7 @@ async fn main() -> anyhow::Result<()> {
                 Output::Table => {
                     let mut t = Table::new();
                     let t = generate_table_header(&mut t, "Namespace");
-                    for task in join_handle {
-                        let x: VecTableDetails = utils::VecTableDetails(task.await?.unwrap());
-                        x.generate_table(t)?;
-                    }
+                    x.generate_table(t)?;
                     println!("{t}");
                 }
             }