4
4
5
5
use crate :: api;
6
6
use crate :: db:: { ArtifactId , Cache , Crate , Profile } ;
7
+ use crate :: github;
7
8
use crate :: load:: SiteCtxt ;
8
9
use crate :: selector:: { self , Tag } ;
9
10
@@ -80,7 +81,7 @@ pub async fn handle_triage(
80
81
}
81
82
let end = end. unwrap_or ( after) ;
82
83
83
- let report = generate_report ( & start, & end, report) ;
84
+ let report = generate_report ( & start, & end, report) . await ;
84
85
Ok ( api:: triage:: Response ( report) )
85
86
}
86
87
@@ -191,7 +192,7 @@ impl ComparisonSummary<'_> {
191
192
use std:: fmt:: Write ;
192
193
193
194
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 ;
195
196
format ! (
196
197
"{} [#{}](https://github.com/rust-lang/rust/issues/{})\n " ,
197
198
title, pr, pr
@@ -725,7 +726,7 @@ impl std::fmt::Display for Direction {
725
726
}
726
727
}
727
728
728
- fn generate_report (
729
+ async fn generate_report (
729
730
start : & Bound ,
730
731
end : & Bound ,
731
732
mut report : HashMap < Direction , Vec < String > > ,
@@ -742,6 +743,22 @@ fn generate_report(
742
743
let regressions = report. remove ( & Direction :: Regression ) . unwrap_or_default ( ) ;
743
744
let improvements = report. remove ( & Direction :: Improvement ) . unwrap_or_default ( ) ;
744
745
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
+ } ;
745
762
format ! (
746
763
r#####"# {date} Triage Log
747
764
@@ -764,6 +781,10 @@ Revision range: [{first_commit}..{last_commit}](https://perf.rust-lang.org/?star
764
781
765
782
{mixed}
766
783
784
+ #### Untriaged Pull Requests
785
+
786
+ {untriaged}
787
+
767
788
#### Nags requiring follow up
768
789
769
790
TODO: Nags
@@ -778,6 +799,7 @@ TODO: Nags
778
799
regressions = regressions. join( "\n \n " ) ,
779
800
improvements = improvements. join( "\n \n " ) ,
780
801
mixed = mixed. join( "\n \n " ) ,
802
+ untriaged = untriaged
781
803
)
782
804
}
783
805
@@ -795,37 +817,3 @@ fn compare_link(start: &ArtifactId, end: &ArtifactId) -> String {
795
817
start, end
796
818
)
797
819
}
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