From fcd615e4b76264b4fff7b5be454787bb6a4252ea Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Tue, 5 Feb 2019 23:10:49 +0100 Subject: Extract project model to separate crate --- crates/ra_lsp_server/src/project_model.rs | 42 +++---------------------------- 1 file changed, 3 insertions(+), 39 deletions(-) (limited to 'crates/ra_lsp_server/src/project_model.rs') diff --git a/crates/ra_lsp_server/src/project_model.rs b/crates/ra_lsp_server/src/project_model.rs index fd5875a0a..6800eb138 100644 --- a/crates/ra_lsp_server/src/project_model.rs +++ b/crates/ra_lsp_server/src/project_model.rs @@ -1,34 +1,13 @@ -mod cargo_workspace; -mod sysroot; +use std::path::PathBuf; -use std::path::{Path, PathBuf}; - -use failure::bail; use thread_worker::{WorkerHandle, Worker}; use crate::Result; -pub use crate::project_model::{ - cargo_workspace::{CargoWorkspace, Package, Target, TargetKind}, - sysroot::Sysroot, +pub use ra_project_model::{ + ProjectWorkspace, CargoWorkspace, Package, Target, TargetKind, Sysroot, }; -#[derive(Debug, Clone)] -pub struct ProjectWorkspace { - pub(crate) cargo: CargoWorkspace, - pub(crate) sysroot: Sysroot, -} - -impl ProjectWorkspace { - pub fn discover(path: &Path) -> Result { - let cargo_toml = find_cargo_toml(path)?; - let cargo = CargoWorkspace::from_cargo_metadata(&cargo_toml)?; - let sysroot = Sysroot::discover(&cargo_toml)?; - let res = ProjectWorkspace { cargo, sysroot }; - Ok(res) - } -} - pub fn workspace_loader() -> (Worker>, WorkerHandle) { thread_worker::spawn::, _>( "workspace loader", @@ -42,18 +21,3 @@ pub fn workspace_loader() -> (Worker>, WorkerH }, ) } - -fn find_cargo_toml(path: &Path) -> Result { - if path.ends_with("Cargo.toml") { - return Ok(path.to_path_buf()); - } - let mut curr = Some(path); - while let Some(path) = curr { - let candidate = path.join("Cargo.toml"); - if candidate.exists() { - return Ok(candidate); - } - curr = path.parent(); - } - bail!("can't find Cargo.toml at {}", path.display()) -} -- cgit v1.2.3