Browse Source

Fix agenda empty item lines repetitions

Santiago Pastorino 4 years ago
parent
commit
a36804d30b
2 changed files with 19 additions and 59 deletions
  1. 9 49
      src/actions.rs
  2. 10 10
      src/agenda.rs

+ 9 - 49
src/actions.rs

@@ -1,3 +1,5 @@
+use std::collections::HashMap;
+
 use async_trait::async_trait;
 
 use reqwest::Client;
@@ -47,42 +49,13 @@ lazy_static! {
     };
 }
 
-// Group all the pending FCP for these teams
-pub const IN_PRE_FCP: &str = "in_pre_fcp";
-pub const IN_FCP: &str = "in_fcp";
-pub const FCP_FINISHED: &str = "fcp_finished";
-
-pub const IN_PRE_FCP_COMPILER_TEAM: &str = "in_pre_fcp_compiler_team";
-pub const IN_PRE_FCP_RUST: &str = "in_pre_fcp_rust";
-pub const IN_PRE_FCP_FORGE: &str = "in_pre_fcp_forge";
-const PENDINGFCP: [&str; 3] = [IN_PRE_FCP_COMPILER_TEAM, IN_PRE_FCP_RUST, IN_PRE_FCP_FORGE];
-
-// Group all the FCP for these teams
-pub const IN_FCP_COMPILER_TEAM: &str = "in_fcp_compiler_team";
-pub const IN_FCP_RUST: &str = "in_fcp_rust";
-pub const IN_FCP_FORGE: &str = "in_fcp_forge";
-const THINGSINFCP: [&str; 3] = [IN_FCP_COMPILER_TEAM, IN_FCP_RUST, IN_FCP_FORGE];
-
-// Group all the Finalized FCP for these teams
-pub const FCP_FINISHED_COMPILER_TEAM: &str = "fcp_finished_compiler_team";
-pub const FCP_FINISHED_RUST: &str = "fcp_finished_rust";
-pub const FCP_FINISHED_FORGE: &str = "fcp_finished_forge";
-const FINALIZEDFCP: [&str; 3] = [
-    FCP_FINISHED_COMPILER_TEAM,
-    FCP_FINISHED_RUST,
-    FCP_FINISHED_FORGE,
-];
-
 #[async_trait]
 impl<'a> Action for Step<'a> {
     async fn call(&self) -> String {
         let gh = GithubClient::new_with_default_token(Client::new());
 
         let mut context = Context::new();
-
-        let mut all_pending_fcp: Vec<(&str, Vec<IssueDecorator>)> = vec![];
-        let mut all_things_in_fcp: Vec<(&str, Vec<IssueDecorator>)> = vec![];
-        let mut all_finalized_fcp: Vec<(&str, Vec<IssueDecorator>)> = vec![];
+        let mut results = HashMap::new();
 
         for Query { repo, queries } in &self.actions {
             let repository = Repository {
@@ -123,16 +96,10 @@ impl<'a> Action for Step<'a> {
                                     })
                                     .collect();
 
-                                // group query results for multiline FCP and add them later
-                                if PENDINGFCP.contains(name) {
-                                    all_pending_fcp.push((IN_PRE_FCP, issues_decorator));
-                                } else if THINGSINFCP.contains(name) {
-                                    all_things_in_fcp.push((IN_FCP, issues_decorator));
-                                } else if FINALIZEDFCP.contains(name) {
-                                    all_finalized_fcp.push((FCP_FINISHED, issues_decorator));
-                                } else {
-                                    context.insert(*name, &issues_decorator);
-                                }
+                                results
+                                    .entry(*name)
+                                    .or_insert(Vec::new())
+                                    .extend(issues_decorator);
                             }
                             Err(err) => {
                                 eprintln!("ERROR: {}", err);
@@ -164,15 +131,8 @@ impl<'a> Action for Step<'a> {
             }
         }
 
-        // Add to a single template the aggregate of each group
-        for (name, issue_decorator) in all_pending_fcp {
-            context.insert(name, &issue_decorator);
-        }
-        for (name, issue_decorator) in all_things_in_fcp {
-            context.insert(name, &issue_decorator);
-        }
-        for (name, issue_decorator) in all_finalized_fcp {
-            context.insert(name, &issue_decorator);
+        for (name, issues) in &results {
+            context.insert(*name, issues);
         }
 
         TEMPLATES

+ 10 - 10
src/agenda.rs

@@ -1,4 +1,4 @@
-use crate::actions::{self, Action, Query, QueryMap, Step};
+use crate::actions::{Action, Query, QueryMap, Step};
 use crate::github;
 
 pub fn prioritization<'a>() -> Box<dyn Action> {
@@ -28,7 +28,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
     });
 
     queries.push(QueryMap {
-        name: actions::IN_PRE_FCP_COMPILER_TEAM,
+        name: "in_pre_fcp",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "open")],
@@ -37,7 +37,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
         },
     });
     queries.push(QueryMap {
-        name: actions::IN_FCP_COMPILER_TEAM,
+        name: "in_fcp",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "open")],
@@ -57,7 +57,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
     });
 
     queries.push(QueryMap {
-        name: actions::FCP_FINISHED_COMPILER_TEAM,
+        name: "fcp_finished",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "all")],
@@ -78,7 +78,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
     let mut queries = Vec::new();
 
     queries.push(QueryMap {
-        name: actions::IN_PRE_FCP_RUST,
+        name: "in_pre_fcp",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "open")],
@@ -87,7 +87,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
         },
     });
     queries.push(QueryMap {
-        name: actions::IN_FCP_RUST,
+        name: "in_fcp",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "open")],
@@ -97,7 +97,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
     });
 
     queries.push(QueryMap {
-        name: actions::FCP_FINISHED_RUST,
+        name: "fcp_finished",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "all")],
@@ -118,7 +118,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
     let mut queries = Vec::new();
 
     queries.push(QueryMap {
-        name: actions::IN_PRE_FCP_FORGE,
+        name: "in_pre_fcp",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "open")],
@@ -127,7 +127,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
         },
     });
     queries.push(QueryMap {
-        name: actions::IN_FCP_FORGE,
+        name: "in_fcp",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "open")],
@@ -137,7 +137,7 @@ pub fn prioritization<'a>() -> Box<dyn Action> {
     });
 
     queries.push(QueryMap {
-        name: actions::FCP_FINISHED_FORGE,
+        name: "fcp_finished",
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "all")],