agenda.rs 32 KB

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