123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698 |
- use crate::actions::{Action, Query, QueryKind, QueryMap, Step};
- use crate::github;
- use std::collections::HashMap;
- pub fn prioritization<'a>() -> Box<dyn Action> {
- let mut actions = Vec::new();
- let mut queries = Vec::new();
- // MCP/FCP queries
- queries.push(QueryMap {
- name: "mcp_new_not_seconded",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(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",
- ],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "mcp_old_not_seconded",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(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",
- ],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "in_pre_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["proposed-final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "mcp_accepted",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "all")],
- include_labels: vec!["major-change-accepted", "to-announce"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "fcp_finished",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(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"],
- ordering: HashMap::new(),
- }),
- });
- actions.push(Query {
- repos: vec!["rust-lang/compiler-team"],
- queries,
- });
- let mut queries = Vec::new();
- queries.push(QueryMap {
- name: "in_pre_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["proposed-final-comment-period", "T-compiler"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["final-comment-period", "T-compiler"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "fcp_finished",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(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"],
- ordering: HashMap::new(),
- }),
- });
- actions.push(Query {
- repos: vec!["rust-lang/rust"],
- queries,
- });
- let mut queries = Vec::new();
- queries.push(QueryMap {
- name: "in_pre_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["proposed-final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["final-comment-period"],
- exclude_labels: vec!["t-libs", "t-libs-api"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "fcp_finished",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(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"],
- ordering: HashMap::new(),
- }),
- });
- actions.push(Query {
- repos: vec!["rust-lang/rust-forge"],
- queries,
- });
- let mut queries = Vec::new();
- // beta nomination queries
- queries.push(QueryMap {
- name: "beta_nominated_t_compiler",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![],
- include_labels: vec!["beta-nominated", "T-compiler"],
- exclude_labels: vec!["beta-accepted"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "beta_nominated_t_rustdoc",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![],
- include_labels: vec!["beta-nominated", "T-rustdoc"],
- exclude_labels: vec!["beta-accepted"],
- ordering: HashMap::new(),
- }),
- });
- // stable nomination queries
- queries.push(QueryMap {
- name: "stable_nominated_t_compiler",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![],
- include_labels: vec!["stable-nominated", "T-compiler"],
- exclude_labels: vec!["stable-accepted"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "stable_nominated_t_rustdoc",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![],
- include_labels: vec!["stable-nominated", "T-rustdoc"],
- exclude_labels: vec!["stable-accepted"],
- ordering: HashMap::new(),
- }),
- });
- // prs waiting on team queries
- queries.push(QueryMap {
- name: "prs_waiting_on_team_t_compiler",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["S-waiting-on-team", "T-compiler"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- // issues of note queries
- queries.push(QueryMap {
- name: "issues_of_note_p_critical",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_unassigned_p_critical",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("no", "assignee")],
- include_labels: vec!["T-compiler", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_p_high",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "P-high"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_unassigned_p_high",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("no", "assignee")],
- include_labels: vec!["T-compiler", "P-high"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_critical",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_high",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-high"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_medium",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-medium"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_beta_p_low",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-low"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_critical",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_high",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_medium",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-medium"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_nightly_p_low",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-nightly", "P-low"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_critical",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_high",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-high"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_medium",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-medium"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "issues_of_note_regression_from_stable_to_stable_p_low",
- kind: QueryKind::Count,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-stable", "P-low"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "p_critical_t_compiler",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "p_critical_t_rustdoc",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-rustdoc", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "beta_regressions_p_high",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["regression-from-stable-to-beta", "P-high"],
- exclude_labels: vec!["T-infra", "T-libs", "T-release", "T-rustdoc", "T-core"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "nightly_regressions_unassigned_p_high",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(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-release", "T-rustdoc", "T-core"],
- ordering: HashMap::new(),
- }),
- });
- queries.push(QueryMap {
- name: "nominated_t_compiler",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["I-nominated", "T-compiler"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- let mut ordering = HashMap::new();
- ordering.insert("sort", "updated");
- ordering.insert("per_page", "5");
- queries.push(QueryMap {
- name: "top_unreviewed_prs",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "pull-request"), ("draft", "false")],
- include_labels: vec!["S-waiting-on-review", "T-compiler"],
- exclude_labels: vec![],
- ordering,
- }),
- });
- actions.push(Query {
- repos: vec!["rust-lang/rust"],
- queries,
- });
- // retrieve some RFCs for the T-compiler agenda
- let mut queries = Vec::new();
- // https://github.com/rust-lang/rfcs/pulls?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler
- queries.push(QueryMap {
- name: "nominated_rfcs_t_compiler",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-compiler", "I-nominated"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- });
- actions.push(Query {
- repos: vec!["rust-lang/rfcs"],
- queries,
- });
- Box::new(Step {
- name: "prioritization_agenda",
- actions,
- })
- }
- pub fn lang<'a>() -> Box<dyn Action> {
- 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: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["major-change"],
- exclude_labels: vec!["charter-needed"],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "pending_lang_team_prs",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "pull-request")],
- include_labels: vec![],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "scheduled_meetings",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["meeting-proposal", "meeting-scheduled"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- },
- ],
- },
- Query {
- repos: vec!["rust-lang/rfcs"],
- queries: vec![QueryMap {
- name: "rfcs_waiting_to_be_merged",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "pr")],
- include_labels: vec![
- "disposition-merge",
- "finished-final-comment-period",
- "T-lang",
- ],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- }],
- },
- Query {
- repos: vec![
- "rust-lang/rfcs",
- "rust-lang/rust",
- "rust-lang/reference",
- "rust-lang/lang-team",
- ],
- queries: vec![
- QueryMap {
- name: "p_critical",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "P-critical"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "nominated",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "I-nominated"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "proposed_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "proposed-final-comment-period"],
- exclude_labels: vec!["finished-final-comment-period"],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "in_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "final-comment-period"],
- exclude_labels: vec!["finished-final-comment-period"],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "finished_fcp",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open")],
- include_labels: vec!["T-lang", "finished-final-comment-period"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- },
- ],
- },
- ],
- })
- }
- pub fn lang_planning<'a>() -> Box<dyn Action> {
- 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: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["major-change"],
- exclude_labels: vec!["charter-needed"],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "pending_lang_team_prs",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "pr")],
- include_labels: vec![],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- },
- QueryMap {
- name: "proposed_meetings",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["meeting-proposal"],
- exclude_labels: vec!["meeting-scheduled"],
- ordering: HashMap::new(),
- }),
- },
- ],
- },
- Query {
- repos: vec!["rust-lang/lang-team"],
- queries: vec![QueryMap {
- name: "active_initiatives",
- kind: QueryKind::List,
- query: github::GithubQuery::REST(github::Query {
- filters: vec![("state", "open"), ("is", "issue")],
- include_labels: vec!["lang-initiative"],
- exclude_labels: vec![],
- ordering: HashMap::new(),
- }),
- }],
- },
- ],
- })
- }
|