workspace.rs
1use std::fs;
2
3use anyhow::{anyhow, Result};
4use cargo_toml::{Manifest, Workspace};
5use toml;
6
7/// Returns the Cargo workspace.
8pub fn load_workspace() -> Result<Workspace> {
9 let workspace_cargo_toml = fs::read_to_string("Cargo.toml")?;
10 let workspace_cargo_toml: Manifest = toml::from_str(&workspace_cargo_toml)?;
11
12 let workspace = workspace_cargo_toml
13 .workspace
14 .ok_or_else(|| anyhow!("top-level Cargo.toml is not a Cargo workspace"))?;
15
16 Ok(workspace)
17}