pm_bin/
cli.rs

1//! parse CLI arguments, print version info.
2use std::env;
3
4use env_logger;
5
6/// init default env_logger
7pub fn init_env_logger() {
8    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
9}
10
11/// simple CLI argument parse, process --version
12pub fn cli_arg(print_version: fn() -> ()) -> Option<Vec<String>> {
13    let a: Vec<String> = env::args().skip(1).collect();
14    if a.len() > 0 {
15        // 检查第 1 个参数
16        match a[0].as_str() {
17            "--version" | "--版本" => {
18                print_version();
19                return None;
20            }
21            _ => {}
22        }
23    }
24    Some(a)
25}
26
27/// use this in final bin crate, this will include `pm_bin.rs`, which provide `print_version` function
28#[macro_export]
29macro_rules! pm_init {
30    () => {
31        mod pm_bin_include {
32            include!(concat!(env!("OUT_DIR"), "/pm_bin.rs"));
33        }
34        use pm_bin_include::print_version;
35    };
36}