Skip to main content

callisto_cli/
workspace.rs

1use callisto_graph::locate::{find_workspace_root, IgnoreWalkLocator};
2use callisto_graph::resolver::ManifestWalkResolver;
3use callisto_graph::Workspace;
4
5use crate::cli::GlobalArgs;
6use crate::error::CliError;
7use crate::runner::CliCommandRunner;
8
9pub fn load_workspace<'a>(
10    global: &GlobalArgs,
11    runner: &'a CliCommandRunner,
12) -> Result<Workspace<'a, CliCommandRunner, ManifestWalkResolver>, CliError> {
13    let start = global.cwd.canonicalize().map_err(|source| CliError::Io {
14        source,
15        path: Some(global.cwd.clone()),
16    })?;
17    let root = find_workspace_root(&start)?;
18    let locator = IgnoreWalkLocator::new(&root);
19    Ok(Workspace::load(root, &locator, runner)?)
20}