devspace/cmds/
edit.rs

1//! The `edit` command.
2
3use std::path::PathBuf;
4
5use crate::{Context, DsError, Result, config::SpaceTreeId};
6
7pub fn command(
8    ctx: &mut Context,
9    space_name: String,
10    wdir: Option<PathBuf>,
11    tree: Option<SpaceTreeId>,
12) -> Result {
13    let space = ctx.db.get_space_mut(&space_name)?;
14    let old_space = space.clone();
15
16    if let Some(wdir) = wdir {
17        if !wdir.exists() {
18            return Err(DsError::DirDoesntExists(wdir));
19        }
20        space.wdir = wdir;
21    }
22
23    if let Some(tree) = tree {
24        if ctx.config.get_tree(&tree).is_err() {
25            return Err(DsError::SpaceTreeNotFound(tree));
26        }
27        space.tree = tree;
28    }
29
30    println!(
31        "from {:?}, {}, {}",
32        space_name,
33        old_space.wdir.display(),
34        old_space.tree.0
35    );
36
37    println!(
38        "to   {:?}, {}, {}",
39        space_name,
40        space.wdir.display(),
41        space.tree.0
42    );
43
44    Ok(())
45}