소스 검색

Move meeting related types and functions to meeting module

Santiago Pastorino 4 년 전
부모
커밋
535af46cd6
4개의 변경된 파일98개의 추가작업 그리고 99개의 파일을 삭제
  1. 3 2
      src/bin/prioritization.rs
  2. 1 0
      src/lib.rs
  3. 8 10
      src/meeting.rs
  4. 86 87
      src/prioritization.rs

+ 3 - 2
src/bin/prioritization.rs

@@ -1,9 +1,10 @@
 use std::io::{self, Write};
-use triagebot::prioritization::{self, Action};
+use triagebot::meeting::Action;
+use triagebot::prioritization;
 
 #[tokio::main]
 async fn main() {
-    let meeting = prioritization::config::prepare_meeting();
+    let meeting = prioritization::prepare_meeting();
 
     for step in &meeting.steps {
         println!("{}", step.call().await);

+ 1 - 0
src/lib.rs

@@ -10,6 +10,7 @@ pub mod db;
 pub mod github;
 pub mod handlers;
 pub mod interactions;
+pub mod meeting;
 pub mod notification_listing;
 pub mod payload;
 pub mod prioritization;

+ 8 - 10
src/prioritization/mod.rs → src/meeting.rs

@@ -5,9 +5,7 @@ use std::env;
 use std::fs::File;
 use std::io::Read;
 
-use crate::github::{GithubClient, Issue, Query, Repository};
-
-pub mod config;
+use crate::github::{self, GithubClient, Issue, Repository};
 
 pub struct Meeting<A: Action> {
     pub steps: Vec<A>,
@@ -20,17 +18,17 @@ pub trait Action {
 
 pub struct Step<'a> {
     pub name: &'a str,
-    pub actions: Vec<RepoQuery<'a>>,
+    pub actions: Vec<Query<'a>>,
 }
 
-pub struct RepoQuery<'a> {
+pub struct Query<'a> {
     pub repo: &'a str,
-    pub queries: Vec<NamedQuery<'a>>,
+    pub queries: Vec<QueryMap<'a>>,
 }
 
-pub struct NamedQuery<'a> {
+pub struct QueryMap<'a> {
     pub name: &'a str,
-    pub query: Query<'a>,
+    pub query: github::Query<'a>,
 }
 
 pub trait Template {
@@ -52,12 +50,12 @@ impl<'a> Action for Step<'a> {
 
         let mut map = Vec::new();
 
-        for RepoQuery { repo, queries } in &self.actions {
+        for Query { repo, queries } in &self.actions {
             let repository = Repository {
                 full_name: repo.to_string(),
             };
 
-            for NamedQuery { name, query } in queries {
+            for QueryMap { name, query } in queries {
                 let issues_search_result = repository.get_issues(&gh, &query).await;
 
                 match issues_search_result {

+ 86 - 87
src/prioritization/config.rs → src/prioritization.rs

@@ -1,6 +1,5 @@
-use crate::github::Query;
-
-use super::{Meeting, NamedQuery, RepoQuery, Step};
+use crate::github;
+use crate::meeting::{Meeting, Query, QueryMap, Step};
 
 pub fn prepare_meeting<'a>() -> Meeting<Step<'a>> {
     Meeting {
@@ -18,27 +17,27 @@ pub fn prepare_meeting<'a>() -> Meeting<Step<'a>> {
 pub fn unpri_i_prioritize<'a>() -> Step<'a> {
     let mut queries = Vec::new();
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "unpri_i_prioritize.all",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-prioritize"],
             exclude_labels: vec!["P-critical", "P-high", "P-medium", "P-low"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "unpri_i_prioritize.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-prioritize", "T-compiler"],
             exclude_labels: vec!["P-critical", "P-high", "P-medium", "P-low"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "unpri_i_prioritize.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-prioritize", "libs-impl"],
             exclude_labels: vec!["P-critical", "P-high", "P-medium", "P-low"],
@@ -47,7 +46,7 @@ pub fn unpri_i_prioritize<'a>() -> Step<'a> {
 
     Step {
         name: "unpri_i_prioritize",
-        actions: vec![RepoQuery {
+        actions: vec![Query {
             repo: "rust-lang/rust",
             queries,
         }],
@@ -59,9 +58,9 @@ pub fn unpri_i_prioritize<'a>() -> Step<'a> {
 pub fn regressions<'a>() -> Step<'a> {
     let mut queries = Vec::new();
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "regressions.stable_to_beta",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["regression-from-stable-to-beta"],
             exclude_labels: vec![
@@ -75,9 +74,9 @@ pub fn regressions<'a>() -> Step<'a> {
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "regressions.stable_to_nightly",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["regression-from-stable-to-nightly"],
             exclude_labels: vec![
@@ -91,9 +90,9 @@ pub fn regressions<'a>() -> Step<'a> {
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "regressions.stable_to_stable",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["regression-from-stable-to-stable"],
             exclude_labels: vec![
@@ -109,7 +108,7 @@ pub fn regressions<'a>() -> Step<'a> {
 
     Step {
         name: "regressions",
-        actions: vec![RepoQuery {
+        actions: vec![Query {
             repo: "rust-lang/rust",
             queries,
         }],
@@ -119,45 +118,45 @@ pub fn regressions<'a>() -> Step<'a> {
 pub fn nominations<'a>() -> Step<'a> {
     let mut queries = Vec::new();
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "nominations.stable_nominated",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["stable-nominated"],
             exclude_labels: vec!["stable-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "nominations.beta_nominated",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["beta-nominated"],
             exclude_labels: vec!["beta-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "nominations.i_nominated",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-nominated"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "nominations.i_nominated_t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-nominated", "T-compiler"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "nominations.i_nominated_libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-nominated", "libs-impl"],
             exclude_labels: vec![],
@@ -166,7 +165,7 @@ pub fn nominations<'a>() -> Step<'a> {
 
     Step {
         name: "nominations",
-        actions: vec![RepoQuery {
+        actions: vec![Query {
             repo: "rust-lang/rust",
             queries,
         }],
@@ -176,27 +175,27 @@ pub fn nominations<'a>() -> Step<'a> {
 pub fn prs_waiting_on_team<'a>() -> Step<'a> {
     let mut queries = Vec::new();
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "prs_waiting_on_team.all",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["S-waiting-on-team"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "prs_waiting_on_team.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["S-waiting-on-team", "T-compiler"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "prs_waiting_on_team.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["S-waiting-on-team", "libs-impl"],
             exclude_labels: vec![],
@@ -205,7 +204,7 @@ pub fn prs_waiting_on_team<'a>() -> Step<'a> {
 
     Step {
         name: "prs_waiting_on_team",
-        actions: vec![RepoQuery {
+        actions: vec![Query {
             repo: "rust-lang/rust",
             queries,
         }],
@@ -216,142 +215,142 @@ pub fn agenda<'a>() -> Step<'a> {
     let mut queries = Vec::new();
     let mut actions = Vec::new();
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "mcp.seconded",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["major-change", "final-comment-period"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "mcp.new_not_seconded",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["major-change", "to-announce"],
             exclude_labels: vec!["final-comment-period"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "mcp.old_not_seconded",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["major-change"],
             exclude_labels: vec!["to-announce", "final-comment-period"],
         },
     });
 
-    actions.push(RepoQuery {
+    actions.push(Query {
         repo: "rust-lang/compiler-team",
         queries,
     });
 
     let mut queries = Vec::new();
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "beta_nominated.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["beta-nominated", "T-compiler"],
             exclude_labels: vec!["beta-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "beta_nominated.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["beta-nominated", "libs-impl"],
             exclude_labels: vec!["beta-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "beta_nominated.t_rustdoc",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["beta-nominated", "T-rustdoc"],
             exclude_labels: vec!["beta-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "stable_nominated.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["stable-nominated", "T-compiler"],
             exclude_labels: vec!["stable-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "stable_nominated.t_rustdoc",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["stable-nominated", "T-rustdoc"],
             exclude_labels: vec!["stable-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "stable_nominated.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![],
             include_labels: vec!["stable-nominated", "libs-impl"],
             exclude_labels: vec!["stable-accepted"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "prs_waiting_on_team.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["S-waiting-on-team", "T-compiler"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "prs_waiting_on_team.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["S-waiting-on-team", "libs-impl"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.p_critical",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["T-compiler", "P-critical"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.unassigned_p_critical",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open"), ("no", "assignee")],
             include_labels: vec!["T-compiler", "P-critical"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.p_high",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["T-compiler", "P-high"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.unassigned_p_high",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open"), ("no", "assignee")],
             include_labels: vec!["T-compiler", "P-high"],
             exclude_labels: vec![],
@@ -362,97 +361,97 @@ pub fn agenda<'a>() -> Step<'a> {
     //   - [M of those are not prioritized](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-stable+-label%3AP-critical+-label%3AP-high+-label%3AP-medium+-label%3AP-low).
     //
     // There are N (more|less) `P-critical` issues and M (more|less) `P-high` issues in comparison with last week.
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.regression_from_stable_to_beta",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["regression-from-stable-to-beta"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.regression_from_stable_to_nightly",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["regression-from-stable-to-nightly"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "issues_of_note.regression_from_stable_to_stable",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["regression-from-stable-to-stable"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "p_critical.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["T-compiler", "P-critical"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "p_critical.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["libs-impl", "P-critical"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "p_critical.t_rustdoc",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["T-rustdoc", "P-critical"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "beta_regressions.unassigned_p_high",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open"), ("no", "assignee")],
             include_labels: vec!["regression-from-stable-to-beta", "P-high"],
             exclude_labels: vec!["T-infra", "T-release"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "nightly_regressions.unassigned_p_high",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open"), ("no", "assignee")],
             include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
             exclude_labels: vec!["T-infra", "T-release"],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "i_nominated.t_compiler",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-nominated", "T-compiler"],
             exclude_labels: vec![],
         },
     });
 
-    queries.push(NamedQuery {
+    queries.push(QueryMap {
         name: "i_nominated.libs_impl",
-        query: Query {
+        query: github::Query {
             filters: vec![("state", "open")],
             include_labels: vec!["I-nominated", "libs-impl"],
             exclude_labels: vec![],
         },
     });
 
-    actions.push(RepoQuery {
+    actions.push(Query {
         repo: "rust-lang/rust",
         queries,
     });