@@ -9,7 +9,7 @@ use crate::utils::PathSanitizer;
99use crate :: args:: Cli ;
1010use std:: io:: Write ;
1111use std:: path:: PathBuf ;
12- use std:: fs:: File ;
12+ use std:: fs:: { self , File } ;
1313use serde_json:: json;
1414use crate :: core:: { config:: { DiagMissingImportsMode } , odoo:: SyncOdoo } ;
1515use crate :: S ;
@@ -42,17 +42,24 @@ impl CliBackend {
4242 info ! ( "Using tracked folders: {:?}" , workspace_folders) ;
4343
4444 for ( id, tracked_folder) in workspace_folders. into_iter ( ) . enumerate ( ) {
45- session. sync_odoo . get_file_mgr ( ) . borrow_mut ( ) . add_workspace_folder ( format ! ( "{}" , id) , PathBuf :: from ( tracked_folder) . sanitize ( ) ) ;
45+ let tf = fs:: canonicalize ( tracked_folder. clone ( ) ) ;
46+ if let Ok ( tf) = tf {
47+ let tf = tf. sanitize ( ) ;
48+ session. sync_odoo . get_file_mgr ( ) . borrow_mut ( ) . add_workspace_folder ( format ! ( "{}" , id) , tf) ;
49+ } else {
50+ error ! ( "Unable to resolve tracked folder: {}" , tracked_folder) ;
51+ }
52+
4653 }
4754
4855 let mut config = ConfigEntry :: new ( ) ;
49- config. addons_paths = addons_paths. into_iter ( ) . collect ( ) ;
50- config. odoo_path = community_path;
56+ config. addons_paths = addons_paths. into_iter ( ) . map ( |p| fs :: canonicalize ( p ) . unwrap_or_else ( |_| PathBuf :: from ( S ! ( "" ) ) ) . sanitize ( ) ) . collect ( ) ;
57+ config. odoo_path = Some ( fs :: canonicalize ( community_path. unwrap_or ( S ! ( "" ) ) ) . unwrap_or_else ( |_| PathBuf :: from ( S ! ( "" ) ) ) . sanitize ( ) ) ;
5158 config. refresh_mode = crate :: core:: config:: RefreshMode :: Off ;
5259 config. diag_missing_imports = DiagMissingImportsMode :: All ;
5360 config. no_typeshed = self . cli . no_typeshed ;
54- config. additional_stubs = self . cli . stubs . clone ( ) . unwrap_or ( vec ! [ ] ) . into_iter ( ) . collect ( ) ;
55- config. stdlib = self . cli . stdlib . clone ( ) . unwrap_or ( S ! ( "" ) ) ;
61+ config. additional_stubs = self . cli . stubs . clone ( ) . unwrap_or ( vec ! [ ] ) . into_iter ( ) . map ( |p| fs :: canonicalize ( p ) . unwrap_or_else ( |_| PathBuf :: from ( S ! ( "" ) ) ) . sanitize ( ) ) . collect ( ) ;
62+ config. stdlib = self . cli . stdlib . clone ( ) . map ( |p| fs :: canonicalize ( p ) . unwrap_or_else ( |_| PathBuf :: from ( S ! ( "" ) ) ) . sanitize ( ) ) . unwrap_or ( S ! ( "" ) ) ;
5663 SyncOdoo :: init ( & mut session, config) ;
5764
5865 let output_path = self . cli . output . clone ( ) . unwrap_or ( S ! ( "output.json" ) ) ;
0 commit comments