@@ -23,7 +23,7 @@ use ruff_db::diagnostic::{Diagnostic, DisplayDiagnosticConfig, Severity};
2323use ruff_db:: max_parallelism;
2424use ruff_db:: system:: { OsSystem , SystemPath , SystemPathBuf } ;
2525use salsa:: plumbing:: ZalsaDatabase ;
26- use ty_project:: metadata:: options:: Options ;
26+ use ty_project:: metadata:: options:: MetaOptions ;
2727use ty_project:: watch:: ProjectWatcher ;
2828use ty_project:: { Db , DummyReporter , Reporter , watch} ;
2929use ty_project:: { ProjectDatabase , ProjectMetadata } ;
@@ -102,12 +102,17 @@ fn run_check(args: CheckCommand) -> anyhow::Result<ExitStatus> {
102102 . map ( |path| SystemPath :: absolute ( path, & cwd) )
103103 . collect ( ) ;
104104
105- let system = OsSystem :: new ( cwd) ;
105+ let system = OsSystem :: new ( cwd. clone ( ) ) ;
106106 let watch = args. watch ;
107107 let exit_zero = args. exit_zero ;
108+ let config_file = args. config_file . clone ( ) ;
109+
110+ let mut project_metadata = match & config_file {
111+ Some ( config_file) => ProjectMetadata :: from_config_file ( config_file. clone ( ) , cwd, & system) ?,
112+ None => ProjectMetadata :: discover ( & project_path, & system) ?,
113+ } ;
108114
109115 let cli_options = args. into_options ( ) ;
110- let mut project_metadata = ProjectMetadata :: discover ( & project_path, & system) ?;
111116 project_metadata. apply_cli_options ( cli_options. clone ( ) ) ;
112117 project_metadata. apply_configuration_files ( & system) ?;
113118
@@ -117,7 +122,8 @@ fn run_check(args: CheckCommand) -> anyhow::Result<ExitStatus> {
117122 db. project ( ) . set_included_paths ( & mut db, check_paths) ;
118123 }
119124
120- let ( main_loop, main_loop_cancellation_token) = MainLoop :: new ( cli_options) ;
125+ let meta_options = MetaOptions :: new ( config_file, cli_options) ;
126+ let ( main_loop, main_loop_cancellation_token) = MainLoop :: new ( meta_options) ;
121127
122128 // Listen to Ctrl+C and abort the watch mode.
123129 let main_loop_cancellation_token = Mutex :: new ( Some ( main_loop_cancellation_token) ) ;
@@ -178,19 +184,19 @@ struct MainLoop {
178184 /// The file system watcher, if running in watch mode.
179185 watcher : Option < ProjectWatcher > ,
180186
181- cli_options : Options ,
187+ meta_options : MetaOptions ,
182188}
183189
184190impl MainLoop {
185- fn new ( cli_options : Options ) -> ( Self , MainLoopCancellationToken ) {
191+ fn new ( meta_options : MetaOptions ) -> ( Self , MainLoopCancellationToken ) {
186192 let ( sender, receiver) = crossbeam_channel:: bounded ( 10 ) ;
187193
188194 (
189195 Self {
190196 sender : sender. clone ( ) ,
191197 receiver,
192198 watcher : None ,
193- cli_options ,
199+ meta_options ,
194200 } ,
195201 MainLoopCancellationToken { sender } ,
196202 )
@@ -340,7 +346,7 @@ impl MainLoop {
340346 MainLoopMessage :: ApplyChanges ( changes) => {
341347 revision += 1 ;
342348 // Automatically cancels any pending queries and waits for them to complete.
343- db. apply_changes ( changes, Some ( & self . cli_options ) ) ;
349+ db. apply_changes ( changes, Some ( & self . meta_options ) ) ;
344350 if let Some ( watcher) = self . watcher . as_mut ( ) {
345351 watcher. update ( db) ;
346352 }
0 commit comments