@@ -9,7 +9,7 @@ use crate::utils::PathSanitizer;
9
9
use crate :: args:: Cli ;
10
10
use std:: io:: Write ;
11
11
use std:: path:: PathBuf ;
12
- use std:: fs:: File ;
12
+ use std:: fs:: { self , File } ;
13
13
use serde_json:: json;
14
14
use crate :: core:: { config:: { DiagMissingImportsMode } , odoo:: SyncOdoo } ;
15
15
use crate :: S ;
@@ -42,17 +42,24 @@ impl CliBackend {
42
42
info ! ( "Using tracked folders: {:?}" , workspace_folders) ;
43
43
44
44
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
+
46
53
}
47
54
48
55
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 ( ) ) ;
51
58
config. refresh_mode = crate :: core:: config:: RefreshMode :: Off ;
52
59
config. diag_missing_imports = DiagMissingImportsMode :: All ;
53
60
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 ! ( "" ) ) ;
56
63
SyncOdoo :: init ( & mut session, config) ;
57
64
58
65
let output_path = self . cli . output . clone ( ) . unwrap_or ( S ! ( "output.json" ) ) ;
0 commit comments