Skip to content

Commit 73bfbc0

Browse files
committed
[FIX] server: resolve relative path in cli mode
1 parent 9e6ae18 commit 73bfbc0

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

server/src/cli_backend.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::utils::PathSanitizer;
99
use crate::args::Cli;
1010
use std::io::Write;
1111
use std::path::PathBuf;
12-
use std::fs::File;
12+
use std::fs::{self, File};
1313
use serde_json::json;
1414
use crate::core::{config::{DiagMissingImportsMode}, odoo::SyncOdoo};
1515
use 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

Comments
 (0)