32 lines
772 B
Rust
32 lines
772 B
Rust
|
use serde::Deserialize;
|
||
|
|
||
|
#[derive(Deserialize, Clone, Debug)]
|
||
|
pub struct Workspace {
|
||
|
pub members: Vec<String>,
|
||
|
}
|
||
|
|
||
|
#[derive(Deserialize, Clone, Debug)]
|
||
|
pub struct File {
|
||
|
pub workspace: Option<Workspace>,
|
||
|
}
|
||
|
|
||
|
impl File {
|
||
|
pub async fn read_file() -> eyre::Result<Option<Self>> {
|
||
|
let file = match tokio::fs::read_to_string("Cargo.toml").await {
|
||
|
Ok(file) => file,
|
||
|
Err(e) => {
|
||
|
tracing::warn!("Cargo.toml was not found: {}", e);
|
||
|
return Ok(None);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
let workspace_file: File = toml::from_str(&file)?;
|
||
|
|
||
|
Ok(Some(workspace_file))
|
||
|
}
|
||
|
|
||
|
pub fn get_workspace_members(&self) -> Option<Vec<String>> {
|
||
|
self.workspace.as_ref().map(|w| w.members.clone())
|
||
|
}
|
||
|
}
|