Skip to main content

libps_mem/conf/
cmd.help.rs.txt

1// WARN: This file is auto generated by flood-tide-gen
2const OPTIONS_TEXT: &str = r"Options:
3  -a, --all             all pid (include kernel threads)
4  --sort <order>        sort by <order>: rss|swap|total
5  --pid <number>        output only selected pid
6  --sleep <number>      sleep <number> milli second
7  -l, --cmdline         view command line
8
9  -H, --help        display this help and exit
10  -V, --version     display version information and exit
11  -X <x-options>    x options. try -X help
12";
13
14#[repr(u8)]
15#[derive(Debug, PartialEq, Eq)]
16enum CmdOp {
17    All,
18    Sort,
19    Pid,
20    Sleep,
21    Cmdline,
22    Help,
23    Version,
24    UcX,
25}
26
27impl CmdOp {
28    pub const fn to(self) -> OptNum {
29        self as OptNum
30    }
31}
32
33impl std::convert::From<u8> for CmdOp {
34    fn from(value: u8) -> Self {
35        match value {
36            0 => CmdOp::All,
37            1 => CmdOp::Sort,
38            2 => CmdOp::Pid,
39            3 => CmdOp::Sleep,
40            4 => CmdOp::Cmdline,
41            5 => CmdOp::Help,
42            6 => CmdOp::Version,
43            7 => CmdOp::UcX,
44            _ => unreachable!(),
45        }
46    }
47}
48
49#[rustfmt::skip]
50const OPT_ARY: [Opt;8] = [
51    Opt { sho: b'X', lon: "",              has: Arg::Yes, num: CmdOp::UcX.to(), },
52    Opt { sho: b'a', lon: "all",           has: Arg::No,  num: CmdOp::All.to(), },
53    Opt { sho: b'l', lon: "cmdline",       has: Arg::No,  num: CmdOp::Cmdline.to(), },
54    Opt { sho: b'H', lon: "help",          has: Arg::No,  num: CmdOp::Help.to(), },
55    Opt { sho: 0u8,  lon: "pid",           has: Arg::Yes, num: CmdOp::Pid.to(), },
56    Opt { sho: 0u8,  lon: "sleep",         has: Arg::Yes, num: CmdOp::Sleep.to(), },
57    Opt { sho: 0u8,  lon: "sort",          has: Arg::Yes, num: CmdOp::Sort.to(), },
58    Opt { sho: b'V', lon: "version",       has: Arg::No,  num: CmdOp::Version.to(), },
59];
60
61#[rustfmt::skip]
62const OPT_ARY_SHO_IDX: [(u8,usize);5] = [
63(b'H',3),(b'V',7),(b'X',0),(b'a',1),(b'l',2),];
64
65#[derive(Debug, Default, PartialEq, Eq)]
66pub struct CmdOptConf {
67    pub prog_name: String,
68    //
69    pub flg_all: bool,
70    pub opt_sort: OptSortOrder,
71    pub opt_pid: i32,
72    pub opt_sleep: u32,
73    pub flg_cmdline: bool,
74    pub flg_help: bool,
75    pub flg_version: bool,
76    pub opt_uc_x: Vec<OptUcXParam>,
77    //
78    pub arg_params: Vec<String>,
79}
80
81impl flood_tide::HelpVersion for CmdOptConf {
82    fn is_help(&self) -> bool {
83        self.flg_help
84    }
85    fn is_version(&self) -> bool {
86        self.flg_version
87    }
88}
89
90fn value_to_type<T>(nv: &NameVal<'_>) -> Result<T, OptParseError>
91where
92    T: std::str::FromStr,
93    <T as std::str::FromStr>::Err: std::fmt::Display,
94{
95    match nv.val {
96        Some(x) => match x.parse::<T>() {
97            Ok(d) => Ok(d),
98            Err(err) => Err(OptParseError::invalid_option_argument(
99                &nv.opt.lon_or_sho(),
100                &err.to_string(),
101            )),
102        },
103        None => Err(OptParseError::missing_option_argument(&nv.opt.lon_or_sho())),
104    }
105}