bolt/core/
setup_cmd.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use std::path::Path;

use super::super::utils;

use colored::Colorize;

pub fn setup_cmd(proj_name: &str) -> (String, utils::ProjectConfig) {
    let root_config = utils::get_workspace_config();
    let src_name = &root_config.source[0];
    let proj_path = format!("{}/{}/", src_name, &proj_name);

    let results = utils::read_file_tree(Path::new(src_name.as_str())).unwrap();
    let target: Vec<_> = results
        .iter()
        .filter(|r| match r.to_ascii_lowercase().to_str() {
            Some(val) => val == proj_name,
            None => false,
        })
        .collect();

    let config: utils::ProjectConfig;
    if target.is_empty() {
        match utils::resolve_alias(src_name, proj_name, results) {
            Some(val) => {
                config = utils::get_project_config(&Path::new(val.as_str()));

                return (val, config);
            }
            None => {
                let msg = format!(
                    "The passed value: {}, could not be resolved as a directory or an alias!",
                    &proj_name.yellow()
                );
                println!("{}", msg.red());
                std::process::exit(1);
            }
        }
    } else {
        config = utils::get_project_config(&Path::new(proj_path.as_str()));

        (proj_path, config)
    }
}