@@ -6,7 +6,10 @@ use crate::github::{
66use crate :: job_queue:: should_use_job_queue;
77use crate :: load:: SiteCtxt ;
88
9- use database:: { parse_backends, BenchmarkRequest , BenchmarkRequestInsertResult , CodegenBackend } ;
9+ use database:: {
10+ parse_backends, parse_profiles, BenchmarkRequest , BenchmarkRequestInsertResult , CodegenBackend ,
11+ Profile ,
12+ } ;
1013use hashbrown:: HashMap ;
1114use std:: sync:: Arc ;
1215
@@ -277,6 +280,7 @@ fn parse_benchmark_parameters<'a>(
277280 exclude : args. remove ( "exclude" ) . filter ( |s| !s. is_empty ( ) ) ,
278281 runs : None ,
279282 backends : args. remove ( "backends" ) . filter ( |s| !s. is_empty ( ) ) ,
283+ profiles : args. remove ( "profiles" ) . filter ( |s| !s. is_empty ( ) ) ,
280284 } ;
281285 if let Some ( runs) = args. remove ( "runs" ) . filter ( |s| !s. is_empty ( ) ) {
282286 let Ok ( runs) = runs. parse :: < u32 > ( ) else {
@@ -297,6 +301,19 @@ fn parse_benchmark_parameters<'a>(
297301 )
298302 } ) ?;
299303 }
304+ if let Some ( profiles) = & params. profiles {
305+ // Make sure that the profiles are correct
306+ parse_profiles ( profiles) . map_err ( |e| {
307+ format ! (
308+ "Cannot parse profiles: {e}. Valid values are: {}" ,
309+ Profile :: all_values( )
310+ . iter( )
311+ . map( |b| b. as_str( ) )
312+ . collect:: <Vec <_>>( )
313+ . join( ", " )
314+ )
315+ } ) ?;
316+ }
300317
301318 if !args. is_empty ( ) {
302319 Err ( format ! (
@@ -346,6 +363,7 @@ struct BenchmarkParameters<'a> {
346363 exclude : Option < & ' a str > ,
347364 runs : Option < i32 > ,
348365 backends : Option < & ' a str > ,
366+ profiles : Option < & ' a str > ,
349367}
350368
351369pub async fn get_authorized_users ( ) -> Result < Vec < u64 > , String > {
0 commit comments