Переглянути джерело

Merge pull request #807 from apiraino/avoid-empty-lines-repetitions

Avoid empty lines repetitions in FCP templates (take 2)
Mark Rousskov 4 роки тому
батько
коміт
3b810b6727
4 змінених файлів з 67 додано та 23 видалено
  1. 51 1
      src/actions.rs
  2. 10 10
      src/agenda.rs
  3. 3 3
      templates/_issues.tt
  4. 3 9
      templates/prioritization_agenda.tt

+ 51 - 1
src/actions.rs

@@ -47,6 +47,32 @@ 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 {
@@ -54,6 +80,10 @@ impl<'a> Action for Step<'a> {
 
         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![];
+
         for Query { repo, queries } in &self.actions {
             let repository = Repository {
                 full_name: repo.to_string(),
@@ -93,7 +123,16 @@ impl<'a> Action for Step<'a> {
                                     })
                                     .collect();
 
-                                context.insert(*name, &issues_decorator);
+                                // 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);
+                                }
                             }
                             Err(err) => {
                                 eprintln!("ERROR: {}", err);
@@ -125,6 +164,17 @@ 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);
+        }
+
         TEMPLATES
             .render(&format!("{}.tt", self.name), &context)
             .unwrap()

+ 10 - 10
src/agenda.rs

@@ -1,4 +1,4 @@
-use crate::actions::{Action, Query, QueryMap, Step};
+use crate::actions::{self, 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: "in_pre_fcp_compiler_team",
+        name: actions::IN_PRE_FCP_COMPILER_TEAM,
         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: "in_fcp_compiler_team",
+        name: actions::IN_FCP_COMPILER_TEAM,
         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: "fcp_finished_compiler_team",
+        name: actions::FCP_FINISHED_COMPILER_TEAM,
         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: "in_pre_fcp_rust",
+        name: actions::IN_PRE_FCP_RUST,
         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: "in_fcp_rust",
+        name: actions::IN_FCP_RUST,
         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: "fcp_finished_rust",
+        name: actions::FCP_FINISHED_RUST,
         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: "in_pre_fcp_forge",
+        name: actions::IN_PRE_FCP_FORGE,
         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: "in_fcp_forge",
+        name: actions::IN_FCP_FORGE,
         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: "fcp_finished_forge",
+        name: actions::FCP_FINISHED_FORGE,
         query: github::Query {
             kind: github::QueryKind::List,
             filters: vec![("state", "all")],

+ 3 - 3
templates/_issues.tt

@@ -1,7 +1,7 @@
 {% import "_issue.tt" as issue %}
 
-{% macro render(issues, indent="", newline_and_indent=true, empty="No issues this time.") %}
+{% macro render(issues, indent="", empty="No issues this time.") %}
 {%- for issue in issues %}
-{{indent}}- {{issue::render(issue=issue)}}{% else %}{% if newline_and_indent %}
-{{indent}}- {% endif %}{{empty}}{% endfor -%}
+{{indent}}- {{issue::render(issue=issue)}}{% else %}
+{{indent}}- {{empty}}{% endfor -%}
 {% endmacro %}

+ 3 - 9
templates/prioritization_agenda.tt

@@ -15,19 +15,13 @@ tags: weekly, rustc
 - Old MCPs (not seconded, take a look)
 {{-issues::render(issues=mcp_old_not_seconded, indent="  ", empty="No old proposals this time.")}}
 - Pending FCP requests (check your boxes!)
-{{-issues::render(issues=in_pre_fcp_compiler_team, indent="", newline_and_indent=false, empty="")}}
-{{-issues::render(issues=in_pre_fcp_rust, indent="", newline_and_indent=false, empty="")}}
-{{-issues::render(issues=in_pre_fcp_forge, indent="  ", empty="No pending FCP requests this time.")}}
+{{-issues::render(issues=in_pre_fcp, indent="  ", empty="No pending FCP requests this time.")}}
 - Things in FCP (make sure you're good with it)
-{{-issues::render(issues=in_fcp_compiler_team, indent="", newline_and_indent=false, empty="")}}
-{{-issues::render(issues=in_fcp_rust, indent="", newline_and_indent=false, empty="")}}
-{{-issues::render(issues=in_fcp_forge, indent="  ", empty="No FCP requests this time.")}}
+{{-issues::render(issues=in_fcp, indent="  ", empty="No FCP requests this time.")}}
 - Accepted MCPs
 {{-issues::render(issues=mcp_accepted, indent="  ", empty="No new accepted proposals this time.")}}
 - Finalized FCPs (disposition merge)
-{{-issues::render(issues=fcp_finished_compiler_team, indent="", newline_and_indent=false, empty="")}}
-{{-issues::render(issues=fcp_finished_rust, indent="", newline_and_indent=false, empty="")}}
-{{-issues::render(issues=fcp_finished_forge, indent="  ", empty="No new finished FCP (disposition merge) this time.")}}
+{{-issues::render(issues=fcp_finished, indent="  ", empty="No new finished FCP (disposition merge) this time.")}}
 
 ### WG checkins