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}