neko_cli/
config.rs

1use crate::Command;
2use std::env;
3
4#[derive(Debug)]
5pub struct Config {
6    pub command: Command,
7    pub app_name: String,
8}
9
10impl Config {
11    pub fn new(mut args: env::Args) -> Result<Config, &'static str>
12    {
13        if args.len() < 3 {
14            panic!("没有足够的参数")
15        }
16        args.next();
17        // 使用环境变量
18        // let case_sensitive = env::var("CASE_INSENSITIVE").is_err();
19        // println!("环境变量: CASE_INSENSITIVE {}", case_sensitive);
20        let command = match args.next() {
21            Some(arg) => match arg.as_str() {
22                "create" => Command::Create,
23                "start" => Command::Start,
24                "build" => Command::Build,
25                "test" => Command::Test,
26                _ => Command::Help,
27            },
28            None => return Err("输入的参数不合法!"),
29        };
30        let app_name = match args.next() {
31            Some(arg) => arg,
32            None => return Err("请输入应用名称!"),
33        };
34        // for arg in args {
35        //     if arg.contains("=") && arg.len() > 2 {
36        //         let ls: Vec<&str> = arg.split("=").collect();
37        //         let k = ls[0];
38        //         let v = ls[1];
39        //         println!("{}: {}", k, v);
40        //     }
41        // }
42        Ok(Config { command, app_name })
43    }
44}