44
55use crate :: api;
66use crate :: db:: { ArtifactId , Cache , Crate , Profile } ;
7+ use crate :: github;
78use crate :: load:: SiteCtxt ;
89use crate :: selector:: { self , Tag } ;
910
@@ -80,7 +81,7 @@ pub async fn handle_triage(
8081 }
8182 let end = end. unwrap_or ( after) ;
8283
83- let report = generate_report ( & start, & end, report) ;
84+ let report = generate_report ( & start, & end, report) . await ;
8485 Ok ( api:: triage:: Response ( report) )
8586}
8687
@@ -191,7 +192,7 @@ impl ComparisonSummary<'_> {
191192 use std:: fmt:: Write ;
192193
193194 let mut result = if let Some ( pr) = comparison. b . pr {
194- let title = gh_pr_title ( pr) . await ;
195+ let title = github :: pr_title ( pr) . await ;
195196 format ! (
196197 "{} [#{}](https://github.com/rust-lang/rust/issues/{})\n " ,
197198 title, pr, pr
@@ -725,7 +726,7 @@ impl std::fmt::Display for Direction {
725726 }
726727}
727728
728- fn generate_report (
729+ async fn generate_report (
729730 start : & Bound ,
730731 end : & Bound ,
731732 mut report : HashMap < Direction , Vec < String > > ,
@@ -742,6 +743,22 @@ fn generate_report(
742743 let regressions = report. remove ( & Direction :: Regression ) . unwrap_or_default ( ) ;
743744 let improvements = report. remove ( & Direction :: Improvement ) . unwrap_or_default ( ) ;
744745 let mixed = report. remove ( & Direction :: Mixed ) . unwrap_or_default ( ) ;
746+ let untriaged = match github:: untriaged_perf_regressions ( ) . await {
747+ Ok ( u) => u
748+ . iter ( )
749+ . map ( |github:: PullRequest { title, number } | {
750+ format ! (
751+ "- [#{} {}](https://github.com/rust-lang/rust/pull/{})" ,
752+ number, title, number
753+ )
754+ } )
755+ . collect :: < Vec < _ > > ( )
756+ . join ( "\n " ) ,
757+ Err ( e) => format ! (
758+ "An **error** occurred when finding the untriaged PRs: {}" ,
759+ e
760+ ) ,
761+ } ;
745762 format ! (
746763 r#####"# {date} Triage Log
747764
@@ -764,6 +781,10 @@ Revision range: [{first_commit}..{last_commit}](https://perf.rust-lang.org/?star
764781
765782{mixed}
766783
784+ #### Untriaged Pull Requests
785+
786+ {untriaged}
787+
767788#### Nags requiring follow up
768789
769790TODO: Nags
@@ -778,6 +799,7 @@ TODO: Nags
778799 regressions = regressions. join( "\n \n " ) ,
779800 improvements = improvements. join( "\n \n " ) ,
780801 mixed = mixed. join( "\n \n " ) ,
802+ untriaged = untriaged
781803 )
782804}
783805
@@ -795,37 +817,3 @@ fn compare_link(start: &ArtifactId, end: &ArtifactId) -> String {
795817 start, end
796818 )
797819}
798-
799- async fn gh_pr_title ( pr : u32 ) -> String {
800- let url = format ! ( "https://api.github.com/repos/rust-lang/rust/pulls/{}" , pr) ;
801- let client = reqwest:: Client :: new ( ) ;
802- let mut request = client
803- . get ( & url)
804- . header ( "Content-Type" , "application/json" )
805- . header ( "User-Agent" , "rustc-perf" ) ;
806-
807- if let Some ( token) = std:: env:: var ( "GITHUB_TOKEN" ) . ok ( ) {
808- request = request. header ( "Authorization" , format ! ( "token {}" , token) ) ;
809- }
810-
811- async fn send ( request : reqwest:: RequestBuilder ) -> Result < String , BoxedError > {
812- Ok ( request
813- . send ( )
814- . await ?
815- . error_for_status ( ) ?
816- . json :: < serde_json:: Value > ( )
817- . await ?
818- . get ( "title" )
819- . ok_or_else ( || "JSON was malformed" . to_owned ( ) ) ?
820- . as_str ( )
821- . ok_or_else ( || "JSON was malformed" . to_owned ( ) ) ?
822- . to_owned ( ) )
823- }
824- match send ( request) . await {
825- Ok ( t) => t,
826- Err ( e) => {
827- eprintln ! ( "Error fetching url: {}" , e) ;
828- String :: from ( "<UNKNOWN>" )
829- }
830- }
831- }
0 commit comments