123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636 |
- use crate::actions::{Action, Query, QueryKind, QueryMap, Step};
- use crate::github;
- use std::sync::Arc;
- pub fn prioritization<'a>() -> Box<dyn Action> {
- Box::new(Step {
- name: "prioritization_agenda",
- actions: vec![
- Query {
- repos: vec![("rust-lang", "compiler-team")],
- queries: vec![
- // MCP/FCP queries
- QueryMap {
- name: "mcp_new_not_seconded",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["major-change", "to-announce"],
- exclude_labels: vec![
- "proposed-final-comment-period",
- "finished-final-comment-period",
- "final-comment-period",
- "major-change-accepted",
- "t-libs",
- "t-libs-api",
- ],
- }),
- },
- QueryMap {
- name: "mcp_old_not_seconded",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["major-change"],
- exclude_labels: vec![
- "to-announce",
- "proposed-final-comment-period",
- "finished-final-comment-period",
- "final-comment-period",
- "t-libs",
- "t-libs-api",
- ],
- }),
- },
- QueryMap {
- name: "in_pre_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["proposed-final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "mcp_accepted",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "all")],
- include_labels: vec!["major-change-accepted", "to-announce"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "fcp_finished",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "all")],
- include_labels: vec![
- "finished-final-comment-period",
- "disposition-merge",
- "to-announce",
- ],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- ],
- },
- Query {
- repos: vec![("rust-lang", "rust")],
- queries: vec![
- QueryMap {
- name: "in_pre_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["proposed-final-comment-period", "T-compiler"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["final-comment-period", "T-compiler"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "fcp_finished",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "all")],
- include_labels: vec![
- "finished-final-comment-period",
- "disposition-merge",
- "to-announce",
- ],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- ],
- },
- Query {
- repos: vec![("rust-lang", "rust-forge")],
- queries: vec![
- QueryMap {
- name: "in_pre_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["proposed-final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- QueryMap {
- name: "fcp_finished",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "all")],
- include_labels: vec![
- "finished-final-comment-period",
- "disposition-merge",
- "to-announce",
- ],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- }),
- },
- ],
- },
- Query {
- repos: vec![("rust-lang", "rust")],
- queries: vec![
- // beta nomination queries
- QueryMap {
- name: "beta_nominated_t_compiler",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![],
- include_labels: vec!["beta-nominated", "T-compiler"],
- exclude_labels: vec!["beta-accepted"],
- }),
- },
- QueryMap {
- name: "beta_nominated_t_rustdoc",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![],
- include_labels: vec!["beta-nominated", "T-rustdoc"],
- exclude_labels: vec!["beta-accepted"],
- }),
- },
- // stable nomination queries
- QueryMap {
- name: "stable_nominated_t_compiler",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![],
- include_labels: vec!["stable-nominated", "T-compiler"],
- exclude_labels: vec!["stable-accepted"],
- }),
- },
- QueryMap {
- name: "stable_nominated_t_rustdoc",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![],
- include_labels: vec!["stable-nominated", "T-rustdoc"],
- exclude_labels: vec!["stable-accepted"],
- }),
- },
- // prs waiting on team queries
- QueryMap {
- name: "prs_waiting_on_team_t_compiler",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["S-waiting-on-team", "T-compiler"],
- exclude_labels: vec![],
- }),
- },
- // issues of note queries
- QueryMap {
- name: "issues_of_note_p_critical",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_unassigned_p_critical",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("no", "assignee")],
- include_labels: vec!["T-compiler", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_p_high",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "P-high"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_unassigned_p_high",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("no", "assignee")],
- include_labels: vec!["T-compiler", "P-high"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_critical",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_high",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-high"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_medium",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-medium"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_low",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-low"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_critical",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_high",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_medium",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-medium"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_low",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-low"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_critical",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_high",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-high"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_medium",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-medium"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_low",
- kind: QueryKind::Count,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-low"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "p_critical_t_compiler",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "p_critical_t_rustdoc",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-rustdoc", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "beta_regressions_p_high",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-high"],
- exclude_labels: vec![
- "T-infra",
- "T-libs",
- "T-libs-api",
- "T-release",
- "T-rustdoc",
- "T-core",
- ],
- }),
- },
- QueryMap {
- name: "nightly_regressions_unassigned_p_high",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("no", "assignee")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
- exclude_labels: vec![
- "T-infra",
- "T-libs",
- "T-libs-api",
- "T-release",
- "T-rustdoc",
- "T-core",
- ],
- }),
- },
- QueryMap {
- name: "nominated_t_compiler",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["I-compiler-nominated"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "top_unreviewed_prs",
- kind: QueryKind::List,
- query: Arc::new(github::LeastRecentlyReviewedPullRequests),
- },
- ],
- },
- Query {
- repos: vec![("rust-lang", "rfcs")],
- queries: vec![
- // retrieve some RFCs for the T-compiler agenda
- // https://github.com/rust-lang/rfcs/pulls?q=is%3Aopen+label%3AI-compiler-nominated
- QueryMap {
- name: "nominated_rfcs_t_compiler",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["I-compiler-nominated"],
- exclude_labels: vec![],
- }),
- },
- ],
- },
- ],
- })
- }
- pub fn lang<'a>() -> Box<dyn Action + Send + Sync> {
- Box::new(Step {
- name: "lang_agenda",
- actions: vec![
- Query {
- repos: vec![("rust-lang", "lang-team")],
- queries: vec![
- QueryMap {
- name: "pending_project_proposals",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["major-change"],
- exclude_labels: vec!["charter-needed", "proposed-final-comment-period"],
- }),
- },
- QueryMap {
- name: "pending_lang_team_prs",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "pull-request")],
- include_labels: vec![],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "scheduled_meetings",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["meeting-proposal", "meeting-scheduled"],
- exclude_labels: vec![],
- }),
- },
- ],
- },
- Query {
- repos: vec![("rust-lang", "rfcs")],
- queries: vec![QueryMap {
- name: "rfcs_waiting_to_be_merged",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "pr")],
- include_labels: vec![
- "disposition-merge",
- "finished-final-comment-period",
- "T-lang",
- ],
- exclude_labels: vec![],
- }),
- }],
- },
- Query {
- repos: vec![
- ("rust-lang", "rfcs"),
- ("rust-lang", "rust"),
- ("rust-lang", "reference"),
- ("rust-lang", "lang-team"),
- ("rust-lang", "compiler-team"),
- ],
- queries: vec![
- QueryMap {
- name: "p_critical",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "P-critical"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "nominated",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["I-lang-nominated"],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "proposed_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "proposed-final-comment-period"],
- exclude_labels: vec!["finished-final-comment-period"],
- }),
- },
- QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "final-comment-period"],
- exclude_labels: vec!["finished-final-comment-period"],
- }),
- },
- QueryMap {
- name: "finished_fcp",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "finished-final-comment-period"],
- exclude_labels: vec![],
- }),
- },
- ],
- },
- ],
- })
- }
- pub fn lang_planning<'a>() -> Box<dyn Action + Send + Sync> {
- Box::new(Step {
- name: "lang_planning_agenda",
- actions: vec![
- Query {
- repos: vec![("rust-lang", "lang-team")],
- queries: vec![
- QueryMap {
- name: "pending_project_proposals",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["major-change"],
- exclude_labels: vec!["charter-needed"],
- }),
- },
- QueryMap {
- name: "pending_lang_team_prs",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "pr")],
- include_labels: vec![],
- exclude_labels: vec![],
- }),
- },
- QueryMap {
- name: "proposed_meetings",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["meeting-proposal"],
- exclude_labels: vec!["meeting-scheduled"],
- }),
- },
- ],
- },
- Query {
- repos: vec![("rust-lang", "lang-team")],
- queries: vec![QueryMap {
- name: "active_initiatives",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["lang-initiative"],
- exclude_labels: vec![],
- }),
- }],
- },
- ],
- })
- }
- // Things to add (maybe):
- // - Compiler RFCs
- // - P-high issues
- pub fn compiler_backlog_bonanza<'a>() -> Box<dyn Action> {
- Box::new(Step {
- name: "compiler_backlog_bonanza",
- actions: vec![Query {
- repos: vec![("rust-lang", "rust")],
- queries: vec![QueryMap {
- name: "tracking_issues",
- kind: QueryKind::List,
- query: Arc::new(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["C-tracking-issue"],
- exclude_labels: vec!["T-libs-api", "T-libs", "T-lang", "T-rustdoc"],
- }),
- }],
- }],
- })
- }
- // Lists available agenda pages
- pub static INDEX: &str = r#"
- <html>
- <body>
- <ul>
- <li><a href="/agenda/lang/triage">T-lang triage agenda</a></li>
- <li><a href="/agenda/lang/planning">T-lang planning agenda</a></li>
- </ul>
- </body>
- </html>
- "#;
|