aide/features.rs
1use run_script::ScriptOptions;
2mod rs_files;
3
4pub fn with_script(args: &Vec<String>, mode: &str, file_name: &str) {
5 let options = ScriptOptions::new();
6 if !mode.is_empty() {
7 let code_name :&str = &format!("{}_{}", file_name, mode);
8 let rs_code = rs_files::get_rs(code_name);
9 let set_file = format!("echo '{}'", rs_code);
10 let cmd_echo = format!("echo '{}' > {}.rs", rs_code, file_name);
11 let cargo_script = format!("cargo script {}.rs", file_name);
12 let rm_script = format!("rm -rf {}.rs", file_name);
13 //dbg!(&rs_code);
14 //dbg!(&cargo_script);
15 //let cmds = format!("{}", &set_file);
16 let cmds = format!(
17 "{}\n{}\n{}\n{}",
18 &set_file, &cmd_echo, &cargo_script, &rm_script
19 );
20 let (_code, output, error) = run_script::run(&cmds, &args, &options).unwrap();
21 //println!("Exit Code: {}\n\n", code);
22 println!("{}\n\n", output);
23 println!("Compiler: Output Info >>>>>>>>>>>>>> :\n\n{}", error);
24 } else {
25 //
26 }
27}
28
29/*
30pub fn with_mode(args: &Vec<String>, mode: &str, file_name: &str) {
31 let options = ScriptOptions::new();
32 let rs_file: &str = &format!("RS_FILE=./examples/{}.rs", file_name);
33 let cmd_cargo;
34 // cargo run --bin bw -- -f kw_let -m error | bat -l rs
35 // cargo run --bin bw -- --file kw_let --mode ok
36 // cargo run --bin bw -- --file kw_let --mode err
37 // is equal to
38 // # cargo run --example kw_let --features ok
39 // # cargo run --example kw_let --features err
40 cmd_cargo = format!("cargo run --example {} --features '{}'", file_name, mode);
41 dbg!(&cmd_cargo);
42 let cmds = format!("{}\n{}\n{}", rs_file, &cmd_cargo, RUM_CMD_BAT);
43 let (_code, output, error) = run_script::run(&cmds, &args, &options).unwrap();
44 //println!("Exit Code: {}\n\n", code);
45 println!("{}\n\n", output);
46 println!("Compiler: Output Info >>>>>>>>>>>>>> :\n\n{}", error);
47}
48*/
49
50pub fn without_mode(args: &Vec<String>, file_name: &str) {
51 let options = ScriptOptions::new();
52 let cmd_cargo;
53 match file_name.as_ref() {
54 "bwx" => {
55 // cargo run --bin bw -- -f bwx
56 // # cargo run --bin bwx
57 cmd_cargo = format!("cargo run --bin {}", file_name);
58 dbg!(&cmd_cargo);
59 let cmds = format!("{}", &cmd_cargo);
60 let (_code, output, error) = run_script::run(&cmds, &args, &options).unwrap();
61 println!("{}", output);
62 dbg!(error);
63 }
64 _ => {
65 println!("\n\nList commands with all features for this code {}:\n", file_name);
66 for item in rs_files::FEATURE_MODE.iter() {
67 let code_name = &format!("{}_{}", file_name, item);
68 let result = rs_files::get_rs(code_name);
69 if result != rs_files::HELLO {
70 println!("bw -c {} -f {} | bat -l rs", file_name, item);
71 //println!("cargo run --bin bw -- -c {} -f {} | bat -l rs\n", file_name, item);
72 }
73 }
74
75 // # cargo run --bin bwx allx
76 // # cargo run --bin bwx devx
77
78 //cmd_cargo = format!("cargo run --bin bwx {}", file_name);
79 //let cmds = format!("{}", &cmd_cargo);
80 //let (_code, output, error) = run_script::run(&cmds, &args, &options).unwrap();
81 //println!("{}", output);
82 //dbg!(error);
83 }
84 }
85}
86
87//const RUM_CMD_BAT: &str = r#"bat $RS_FILE"#;
88
89// https://doc.rust-lang.org/rust-by-example/std_misc/arg/matching.html
90// https://doc.rust-lang.org/rust-by-example/flow_control/match.html
91
92// 题外话
93// https://doc.rust-lang.org/rust-by-example/flow_control/match.html
94// https://stackoverflow.com/questions/25383488/how-to-match-a-string-against-string-literals-in-rust