agenda.rs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. use crate::actions::{Action, Query, QueryKind, QueryMap, Step};
  2. use crate::github;
  3. use std::collections::HashMap;
  4. pub fn prioritization<'a>() -> Box<dyn Action> {
  5. let mut actions = Vec::new();
  6. let mut queries = Vec::new();
  7. // MCP/FCP queries
  8. queries.push(QueryMap {
  9. name: "mcp_new_not_seconded",
  10. kind: QueryKind::List,
  11. query: github::GithubQuery::REST(github::Query {
  12. filters: vec![("state", "open")],
  13. include_labels: vec!["major-change", "to-announce"],
  14. exclude_labels: vec![
  15. "proposed-final-comment-period",
  16. "finished-final-comment-period",
  17. "final-comment-period",
  18. "major-change-accepted",
  19. "t-libs",
  20. "t-libs-api",
  21. ],
  22. ordering: HashMap::new(),
  23. }),
  24. });
  25. queries.push(QueryMap {
  26. name: "mcp_old_not_seconded",
  27. kind: QueryKind::List,
  28. query: github::GithubQuery::REST(github::Query {
  29. filters: vec![("state", "open")],
  30. include_labels: vec!["major-change"],
  31. exclude_labels: vec![
  32. "to-announce",
  33. "proposed-final-comment-period",
  34. "finished-final-comment-period",
  35. "final-comment-period",
  36. "t-libs",
  37. "t-libs-api",
  38. ],
  39. ordering: HashMap::new(),
  40. }),
  41. });
  42. queries.push(QueryMap {
  43. name: "in_pre_fcp",
  44. kind: QueryKind::List,
  45. query: github::GithubQuery::REST(github::Query {
  46. filters: vec![("state", "open")],
  47. include_labels: vec!["proposed-final-comment-period"],
  48. exclude_labels: vec!["t-libs", "t-libs-api"],
  49. ordering: HashMap::new(),
  50. }),
  51. });
  52. queries.push(QueryMap {
  53. name: "in_fcp",
  54. kind: QueryKind::List,
  55. query: github::GithubQuery::REST(github::Query {
  56. filters: vec![("state", "open")],
  57. include_labels: vec!["final-comment-period"],
  58. exclude_labels: vec!["t-libs", "t-libs-api"],
  59. ordering: HashMap::new(),
  60. }),
  61. });
  62. queries.push(QueryMap {
  63. name: "mcp_accepted",
  64. kind: QueryKind::List,
  65. query: github::GithubQuery::REST(github::Query {
  66. filters: vec![("state", "all")],
  67. include_labels: vec!["major-change-accepted", "to-announce"],
  68. exclude_labels: vec!["t-libs", "t-libs-api"],
  69. ordering: HashMap::new(),
  70. }),
  71. });
  72. queries.push(QueryMap {
  73. name: "fcp_finished",
  74. kind: QueryKind::List,
  75. query: github::GithubQuery::REST(github::Query {
  76. filters: vec![("state", "all")],
  77. include_labels: vec![
  78. "finished-final-comment-period",
  79. "disposition-merge",
  80. "to-announce",
  81. ],
  82. exclude_labels: vec!["t-libs", "t-libs-api"],
  83. ordering: HashMap::new(),
  84. }),
  85. });
  86. actions.push(Query {
  87. repos: vec!["rust-lang/compiler-team"],
  88. queries,
  89. });
  90. let mut queries = Vec::new();
  91. queries.push(QueryMap {
  92. name: "in_pre_fcp",
  93. kind: QueryKind::List,
  94. query: github::GithubQuery::REST(github::Query {
  95. filters: vec![("state", "open")],
  96. include_labels: vec!["proposed-final-comment-period", "T-compiler"],
  97. exclude_labels: vec!["t-libs", "t-libs-api"],
  98. ordering: HashMap::new(),
  99. }),
  100. });
  101. queries.push(QueryMap {
  102. name: "in_fcp",
  103. kind: QueryKind::List,
  104. query: github::GithubQuery::REST(github::Query {
  105. filters: vec![("state", "open")],
  106. include_labels: vec!["final-comment-period", "T-compiler"],
  107. exclude_labels: vec!["t-libs", "t-libs-api"],
  108. ordering: HashMap::new(),
  109. }),
  110. });
  111. queries.push(QueryMap {
  112. name: "fcp_finished",
  113. kind: QueryKind::List,
  114. query: github::GithubQuery::REST(github::Query {
  115. filters: vec![("state", "all")],
  116. include_labels: vec![
  117. "finished-final-comment-period",
  118. "disposition-merge",
  119. "to-announce",
  120. ],
  121. exclude_labels: vec!["t-libs", "t-libs-api"],
  122. ordering: HashMap::new(),
  123. }),
  124. });
  125. actions.push(Query {
  126. repos: vec!["rust-lang/rust"],
  127. queries,
  128. });
  129. let mut queries = Vec::new();
  130. queries.push(QueryMap {
  131. name: "in_pre_fcp",
  132. kind: QueryKind::List,
  133. query: github::GithubQuery::REST(github::Query {
  134. filters: vec![("state", "open")],
  135. include_labels: vec!["proposed-final-comment-period"],
  136. exclude_labels: vec!["t-libs", "t-libs-api"],
  137. ordering: HashMap::new(),
  138. }),
  139. });
  140. queries.push(QueryMap {
  141. name: "in_fcp",
  142. kind: QueryKind::List,
  143. query: github::GithubQuery::REST(github::Query {
  144. filters: vec![("state", "open")],
  145. include_labels: vec!["final-comment-period"],
  146. exclude_labels: vec!["t-libs", "t-libs-api"],
  147. ordering: HashMap::new(),
  148. }),
  149. });
  150. queries.push(QueryMap {
  151. name: "fcp_finished",
  152. kind: QueryKind::List,
  153. query: github::GithubQuery::REST(github::Query {
  154. filters: vec![("state", "all")],
  155. include_labels: vec![
  156. "finished-final-comment-period",
  157. "disposition-merge",
  158. "to-announce",
  159. ],
  160. exclude_labels: vec!["t-libs", "t-libs-api"],
  161. ordering: HashMap::new(),
  162. }),
  163. });
  164. actions.push(Query {
  165. repos: vec!["rust-lang/rust-forge"],
  166. queries,
  167. });
  168. let mut queries = Vec::new();
  169. // beta nomination queries
  170. queries.push(QueryMap {
  171. name: "beta_nominated_t_compiler",
  172. kind: QueryKind::List,
  173. query: github::GithubQuery::REST(github::Query {
  174. filters: vec![],
  175. include_labels: vec!["beta-nominated", "T-compiler"],
  176. exclude_labels: vec!["beta-accepted"],
  177. ordering: HashMap::new(),
  178. }),
  179. });
  180. queries.push(QueryMap {
  181. name: "beta_nominated_t_rustdoc",
  182. kind: QueryKind::List,
  183. query: github::GithubQuery::REST(github::Query {
  184. filters: vec![],
  185. include_labels: vec!["beta-nominated", "T-rustdoc"],
  186. exclude_labels: vec!["beta-accepted"],
  187. ordering: HashMap::new(),
  188. }),
  189. });
  190. // stable nomination queries
  191. queries.push(QueryMap {
  192. name: "stable_nominated_t_compiler",
  193. kind: QueryKind::List,
  194. query: github::GithubQuery::REST(github::Query {
  195. filters: vec![],
  196. include_labels: vec!["stable-nominated", "T-compiler"],
  197. exclude_labels: vec!["stable-accepted"],
  198. ordering: HashMap::new(),
  199. }),
  200. });
  201. queries.push(QueryMap {
  202. name: "stable_nominated_t_rustdoc",
  203. kind: QueryKind::List,
  204. query: github::GithubQuery::REST(github::Query {
  205. filters: vec![],
  206. include_labels: vec!["stable-nominated", "T-rustdoc"],
  207. exclude_labels: vec!["stable-accepted"],
  208. ordering: HashMap::new(),
  209. }),
  210. });
  211. // prs waiting on team queries
  212. queries.push(QueryMap {
  213. name: "prs_waiting_on_team_t_compiler",
  214. kind: QueryKind::List,
  215. query: github::GithubQuery::REST(github::Query {
  216. filters: vec![("state", "open")],
  217. include_labels: vec!["S-waiting-on-team", "T-compiler"],
  218. exclude_labels: vec![],
  219. ordering: HashMap::new(),
  220. }),
  221. });
  222. // issues of note queries
  223. queries.push(QueryMap {
  224. name: "issues_of_note_p_critical",
  225. kind: QueryKind::Count,
  226. query: github::GithubQuery::REST(github::Query {
  227. filters: vec![("state", "open")],
  228. include_labels: vec!["T-compiler", "P-critical"],
  229. exclude_labels: vec![],
  230. ordering: HashMap::new(),
  231. }),
  232. });
  233. queries.push(QueryMap {
  234. name: "issues_of_note_unassigned_p_critical",
  235. kind: QueryKind::Count,
  236. query: github::GithubQuery::REST(github::Query {
  237. filters: vec![("state", "open"), ("no", "assignee")],
  238. include_labels: vec!["T-compiler", "P-critical"],
  239. exclude_labels: vec![],
  240. ordering: HashMap::new(),
  241. }),
  242. });
  243. queries.push(QueryMap {
  244. name: "issues_of_note_p_high",
  245. kind: QueryKind::Count,
  246. query: github::GithubQuery::REST(github::Query {
  247. filters: vec![("state", "open")],
  248. include_labels: vec!["T-compiler", "P-high"],
  249. exclude_labels: vec![],
  250. ordering: HashMap::new(),
  251. }),
  252. });
  253. queries.push(QueryMap {
  254. name: "issues_of_note_unassigned_p_high",
  255. kind: QueryKind::Count,
  256. query: github::GithubQuery::REST(github::Query {
  257. filters: vec![("state", "open"), ("no", "assignee")],
  258. include_labels: vec!["T-compiler", "P-high"],
  259. exclude_labels: vec![],
  260. ordering: HashMap::new(),
  261. }),
  262. });
  263. queries.push(QueryMap {
  264. name: "issues_of_note_regression_from_stable_to_beta_p_critical",
  265. kind: QueryKind::Count,
  266. query: github::GithubQuery::REST(github::Query {
  267. filters: vec![("state", "open")],
  268. include_labels: vec!["regression-from-stable-to-beta", "P-critical"],
  269. exclude_labels: vec![],
  270. ordering: HashMap::new(),
  271. }),
  272. });
  273. queries.push(QueryMap {
  274. name: "issues_of_note_regression_from_stable_to_beta_p_high",
  275. kind: QueryKind::Count,
  276. query: github::GithubQuery::REST(github::Query {
  277. filters: vec![("state", "open")],
  278. include_labels: vec!["regression-from-stable-to-beta", "P-high"],
  279. exclude_labels: vec![],
  280. ordering: HashMap::new(),
  281. }),
  282. });
  283. queries.push(QueryMap {
  284. name: "issues_of_note_regression_from_stable_to_beta_p_medium",
  285. kind: QueryKind::Count,
  286. query: github::GithubQuery::REST(github::Query {
  287. filters: vec![("state", "open")],
  288. include_labels: vec!["regression-from-stable-to-beta", "P-medium"],
  289. exclude_labels: vec![],
  290. ordering: HashMap::new(),
  291. }),
  292. });
  293. queries.push(QueryMap {
  294. name: "issues_of_note_regression_from_stable_to_beta_p_low",
  295. kind: QueryKind::Count,
  296. query: github::GithubQuery::REST(github::Query {
  297. filters: vec![("state", "open")],
  298. include_labels: vec!["regression-from-stable-to-beta", "P-low"],
  299. exclude_labels: vec![],
  300. ordering: HashMap::new(),
  301. }),
  302. });
  303. queries.push(QueryMap {
  304. name: "issues_of_note_regression_from_stable_to_nightly_p_critical",
  305. kind: QueryKind::Count,
  306. query: github::GithubQuery::REST(github::Query {
  307. filters: vec![("state", "open")],
  308. include_labels: vec!["regression-from-stable-to-nightly", "P-critical"],
  309. exclude_labels: vec![],
  310. ordering: HashMap::new(),
  311. }),
  312. });
  313. queries.push(QueryMap {
  314. name: "issues_of_note_regression_from_stable_to_nightly_p_high",
  315. kind: QueryKind::Count,
  316. query: github::GithubQuery::REST(github::Query {
  317. filters: vec![("state", "open")],
  318. include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
  319. exclude_labels: vec![],
  320. ordering: HashMap::new(),
  321. }),
  322. });
  323. queries.push(QueryMap {
  324. name: "issues_of_note_regression_from_stable_to_nightly_p_medium",
  325. kind: QueryKind::Count,
  326. query: github::GithubQuery::REST(github::Query {
  327. filters: vec![("state", "open")],
  328. include_labels: vec!["regression-from-stable-to-nightly", "P-medium"],
  329. exclude_labels: vec![],
  330. ordering: HashMap::new(),
  331. }),
  332. });
  333. queries.push(QueryMap {
  334. name: "issues_of_note_regression_from_stable_to_nightly_p_low",
  335. kind: QueryKind::Count,
  336. query: github::GithubQuery::REST(github::Query {
  337. filters: vec![("state", "open")],
  338. include_labels: vec!["regression-from-stable-to-nightly", "P-low"],
  339. exclude_labels: vec![],
  340. ordering: HashMap::new(),
  341. }),
  342. });
  343. queries.push(QueryMap {
  344. name: "issues_of_note_regression_from_stable_to_stable_p_critical",
  345. kind: QueryKind::Count,
  346. query: github::GithubQuery::REST(github::Query {
  347. filters: vec![("state", "open")],
  348. include_labels: vec!["regression-from-stable-to-stable", "P-critical"],
  349. exclude_labels: vec![],
  350. ordering: HashMap::new(),
  351. }),
  352. });
  353. queries.push(QueryMap {
  354. name: "issues_of_note_regression_from_stable_to_stable_p_high",
  355. kind: QueryKind::Count,
  356. query: github::GithubQuery::REST(github::Query {
  357. filters: vec![("state", "open")],
  358. include_labels: vec!["regression-from-stable-to-stable", "P-high"],
  359. exclude_labels: vec![],
  360. ordering: HashMap::new(),
  361. }),
  362. });
  363. queries.push(QueryMap {
  364. name: "issues_of_note_regression_from_stable_to_stable_p_medium",
  365. kind: QueryKind::Count,
  366. query: github::GithubQuery::REST(github::Query {
  367. filters: vec![("state", "open")],
  368. include_labels: vec!["regression-from-stable-to-stable", "P-medium"],
  369. exclude_labels: vec![],
  370. ordering: HashMap::new(),
  371. }),
  372. });
  373. queries.push(QueryMap {
  374. name: "issues_of_note_regression_from_stable_to_stable_p_low",
  375. kind: QueryKind::Count,
  376. query: github::GithubQuery::REST(github::Query {
  377. filters: vec![("state", "open")],
  378. include_labels: vec!["regression-from-stable-to-stable", "P-low"],
  379. exclude_labels: vec![],
  380. ordering: HashMap::new(),
  381. }),
  382. });
  383. queries.push(QueryMap {
  384. name: "p_critical_t_compiler",
  385. kind: QueryKind::List,
  386. query: github::GithubQuery::REST(github::Query {
  387. filters: vec![("state", "open")],
  388. include_labels: vec!["T-compiler", "P-critical"],
  389. exclude_labels: vec![],
  390. ordering: HashMap::new(),
  391. }),
  392. });
  393. queries.push(QueryMap {
  394. name: "p_critical_t_rustdoc",
  395. kind: QueryKind::List,
  396. query: github::GithubQuery::REST(github::Query {
  397. filters: vec![("state", "open")],
  398. include_labels: vec!["T-rustdoc", "P-critical"],
  399. exclude_labels: vec![],
  400. ordering: HashMap::new(),
  401. }),
  402. });
  403. queries.push(QueryMap {
  404. name: "beta_regressions_p_high",
  405. kind: QueryKind::List,
  406. query: github::GithubQuery::REST(github::Query {
  407. filters: vec![("state", "open")],
  408. include_labels: vec!["regression-from-stable-to-beta", "P-high"],
  409. exclude_labels: vec!["T-infra", "T-libs", "T-release", "T-rustdoc", "T-core"],
  410. ordering: HashMap::new(),
  411. }),
  412. });
  413. queries.push(QueryMap {
  414. name: "nightly_regressions_unassigned_p_high",
  415. kind: QueryKind::List,
  416. query: github::GithubQuery::REST(github::Query {
  417. filters: vec![("state", "open"), ("no", "assignee")],
  418. include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
  419. exclude_labels: vec!["T-infra", "T-libs", "T-release", "T-rustdoc", "T-core"],
  420. ordering: HashMap::new(),
  421. }),
  422. });
  423. queries.push(QueryMap {
  424. name: "nominated_t_compiler",
  425. kind: QueryKind::List,
  426. query: github::GithubQuery::REST(github::Query {
  427. filters: vec![("state", "open")],
  428. include_labels: vec!["I-nominated", "T-compiler"],
  429. exclude_labels: vec![],
  430. ordering: HashMap::new(),
  431. }),
  432. });
  433. let mut ordering = HashMap::new();
  434. ordering.insert("sort", "updated");
  435. ordering.insert("per_page", "5");
  436. queries.push(QueryMap {
  437. name: "top_unreviewed_prs",
  438. kind: QueryKind::List,
  439. query: github::GithubQuery::REST(github::Query {
  440. filters: vec![("state", "open"), ("is", "pull-request"), ("draft", "false")],
  441. include_labels: vec!["S-waiting-on-review", "T-compiler"],
  442. exclude_labels: vec![],
  443. ordering,
  444. }),
  445. });
  446. actions.push(Query {
  447. repos: vec!["rust-lang/rust"],
  448. queries,
  449. });
  450. // retrieve some RFCs for the T-compiler agenda
  451. let mut queries = Vec::new();
  452. // https://github.com/rust-lang/rfcs/pulls?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler
  453. queries.push(QueryMap {
  454. name: "nominated_rfcs_t_compiler",
  455. kind: QueryKind::List,
  456. query: github::GithubQuery::REST(github::Query {
  457. filters: vec![("state", "open")],
  458. include_labels: vec!["T-compiler", "I-nominated"],
  459. exclude_labels: vec![],
  460. ordering: HashMap::new(),
  461. }),
  462. });
  463. actions.push(Query {
  464. repos: vec!["rust-lang/rfcs"],
  465. queries,
  466. });
  467. Box::new(Step {
  468. name: "prioritization_agenda",
  469. actions,
  470. })
  471. }
  472. pub fn lang<'a>() -> Box<dyn Action> {
  473. Box::new(Step {
  474. name: "lang_agenda",
  475. actions: vec![
  476. Query {
  477. repos: vec!["rust-lang/lang-team"],
  478. queries: vec![
  479. QueryMap {
  480. name: "pending_project_proposals",
  481. kind: QueryKind::List,
  482. query: github::GithubQuery::REST(github::Query {
  483. filters: vec![("state", "open"), ("is", "issue")],
  484. include_labels: vec!["major-change"],
  485. exclude_labels: vec!["charter-needed"],
  486. ordering: HashMap::new(),
  487. }),
  488. },
  489. QueryMap {
  490. name: "pending_lang_team_prs",
  491. kind: QueryKind::List,
  492. query: github::GithubQuery::REST(github::Query {
  493. filters: vec![("state", "open"), ("is", "pull-request")],
  494. include_labels: vec![],
  495. exclude_labels: vec![],
  496. ordering: HashMap::new(),
  497. }),
  498. },
  499. QueryMap {
  500. name: "scheduled_meetings",
  501. kind: QueryKind::List,
  502. query: github::GithubQuery::REST(github::Query {
  503. filters: vec![("state", "open"), ("is", "issue")],
  504. include_labels: vec!["meeting-proposal", "meeting-scheduled"],
  505. exclude_labels: vec![],
  506. ordering: HashMap::new(),
  507. }),
  508. },
  509. ],
  510. },
  511. Query {
  512. repos: vec!["rust-lang/rfcs"],
  513. queries: vec![QueryMap {
  514. name: "rfcs_waiting_to_be_merged",
  515. kind: QueryKind::List,
  516. query: github::GithubQuery::REST(github::Query {
  517. filters: vec![("state", "open"), ("is", "pr")],
  518. include_labels: vec![
  519. "disposition-merge",
  520. "finished-final-comment-period",
  521. "T-lang",
  522. ],
  523. exclude_labels: vec![],
  524. ordering: HashMap::new(),
  525. }),
  526. }],
  527. },
  528. Query {
  529. repos: vec![
  530. "rust-lang/rfcs",
  531. "rust-lang/rust",
  532. "rust-lang/reference",
  533. "rust-lang/lang-team",
  534. ],
  535. queries: vec![
  536. QueryMap {
  537. name: "p_critical",
  538. kind: QueryKind::List,
  539. query: github::GithubQuery::REST(github::Query {
  540. filters: vec![("state", "open")],
  541. include_labels: vec!["T-lang", "P-critical"],
  542. exclude_labels: vec![],
  543. ordering: HashMap::new(),
  544. }),
  545. },
  546. QueryMap {
  547. name: "nominated",
  548. kind: QueryKind::List,
  549. query: github::GithubQuery::REST(github::Query {
  550. filters: vec![("state", "open")],
  551. include_labels: vec!["T-lang", "I-nominated"],
  552. exclude_labels: vec![],
  553. ordering: HashMap::new(),
  554. }),
  555. },
  556. QueryMap {
  557. name: "proposed_fcp",
  558. kind: QueryKind::List,
  559. query: github::GithubQuery::REST(github::Query {
  560. filters: vec![("state", "open")],
  561. include_labels: vec!["T-lang", "proposed-final-comment-period"],
  562. exclude_labels: vec!["finished-final-comment-period"],
  563. ordering: HashMap::new(),
  564. }),
  565. },
  566. QueryMap {
  567. name: "in_fcp",
  568. kind: QueryKind::List,
  569. query: github::GithubQuery::REST(github::Query {
  570. filters: vec![("state", "open")],
  571. include_labels: vec!["T-lang", "final-comment-period"],
  572. exclude_labels: vec!["finished-final-comment-period"],
  573. ordering: HashMap::new(),
  574. }),
  575. },
  576. QueryMap {
  577. name: "finished_fcp",
  578. kind: QueryKind::List,
  579. query: github::GithubQuery::REST(github::Query {
  580. filters: vec![("state", "open")],
  581. include_labels: vec!["T-lang", "finished-final-comment-period"],
  582. exclude_labels: vec![],
  583. ordering: HashMap::new(),
  584. }),
  585. },
  586. ],
  587. },
  588. ],
  589. })
  590. }
  591. pub fn lang_planning<'a>() -> Box<dyn Action> {
  592. Box::new(Step {
  593. name: "lang_planning_agenda",
  594. actions: vec![
  595. Query {
  596. repos: vec!["rust-lang/lang-team"],
  597. queries: vec![
  598. QueryMap {
  599. name: "pending_project_proposals",
  600. kind: QueryKind::List,
  601. query: github::GithubQuery::REST(github::Query {
  602. filters: vec![("state", "open"), ("is", "issue")],
  603. include_labels: vec!["major-change"],
  604. exclude_labels: vec!["charter-needed"],
  605. ordering: HashMap::new(),
  606. }),
  607. },
  608. QueryMap {
  609. name: "pending_lang_team_prs",
  610. kind: QueryKind::List,
  611. query: github::GithubQuery::REST(github::Query {
  612. filters: vec![("state", "open"), ("is", "pr")],
  613. include_labels: vec![],
  614. exclude_labels: vec![],
  615. ordering: HashMap::new(),
  616. }),
  617. },
  618. QueryMap {
  619. name: "proposed_meetings",
  620. kind: QueryKind::List,
  621. query: github::GithubQuery::REST(github::Query {
  622. filters: vec![("state", "open"), ("is", "issue")],
  623. include_labels: vec!["meeting-proposal"],
  624. exclude_labels: vec!["meeting-scheduled"],
  625. ordering: HashMap::new(),
  626. }),
  627. },
  628. ],
  629. },
  630. Query {
  631. repos: vec!["rust-lang/lang-team"],
  632. queries: vec![QueryMap {
  633. name: "active_initiatives",
  634. kind: QueryKind::List,
  635. query: github::GithubQuery::REST(github::Query {
  636. filters: vec![("state", "open"), ("is", "issue")],
  637. include_labels: vec!["lang-initiative"],
  638. exclude_labels: vec![],
  639. ordering: HashMap::new(),
  640. }),
  641. }],
  642. },
  643. ],
  644. })
  645. }