cargo_mobile2/
opts.rs

1use serde::{Deserialize, Serialize};
2#[cfg(feature = "cli")]
3use structopt::clap::arg_enum;
4
5#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
6pub enum NoiseLevel {
7    Polite,
8    LoudAndProud,
9    FranklyQuitePedantic,
10}
11
12impl Default for NoiseLevel {
13    fn default() -> Self {
14        Self::Polite
15    }
16}
17
18impl NoiseLevel {
19    pub fn from_occurrences(occurrences: u64) -> Self {
20        match occurrences {
21            0 => Self::Polite,
22            1 => Self::LoudAndProud,
23            _ => Self::FranklyQuitePedantic,
24        }
25    }
26
27    pub fn polite(self) -> bool {
28        matches!(self, Self::Polite)
29    }
30
31    pub fn loud(self) -> bool {
32        matches!(self, Self::LoudAndProud)
33    }
34
35    pub fn pedantic(self) -> bool {
36        matches!(self, Self::FranklyQuitePedantic)
37    }
38}
39
40#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
41pub enum Profile {
42    Debug,
43    Release,
44}
45
46impl Profile {
47    pub fn from_flag(flag: bool) -> Self {
48        if flag {
49            Self::Release
50        } else {
51            Self::Debug
52        }
53    }
54
55    pub fn debug(self) -> bool {
56        matches!(self, Self::Debug)
57    }
58
59    pub fn release(self) -> bool {
60        matches!(self, Self::Release)
61    }
62
63    pub fn as_str(&self) -> &'static str {
64        match self {
65            Self::Debug => "debug",
66            Self::Release => "release",
67        }
68    }
69
70    pub fn as_str_pascal_case(&self) -> &'static str {
71        match self {
72            Self::Debug => "Debug",
73            Self::Release => "Release",
74        }
75    }
76
77    pub fn suffixes(&self) -> &[&str] {
78        match self {
79            Profile::Debug => &["debug"],
80            Profile::Release => &["release", "release-unsigned"],
81        }
82    }
83}
84
85/// Android device logging filter level, used as an argument for run
86#[cfg(not(feature = "cli"))]
87#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
88pub enum FilterLevel {
89    Error,
90    Warn,
91    Info,
92    Debug,
93    Verbose,
94}
95
96#[cfg(feature = "cli")]
97arg_enum! {
98    /// Android device logging filter level, used as an argument for run
99    #[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
100    pub enum FilterLevel {
101        Error,
102        Warn,
103        Info,
104        Debug,
105        Verbose,
106    }
107}
108
109impl FilterLevel {
110    /// Filter level for logcat
111    pub fn logcat(&self) -> &'static str {
112        match self {
113            Self::Error => "E",
114            Self::Warn => "W",
115            Self::Info => "I",
116            Self::Debug => "D",
117            Self::Verbose => "V",
118        }
119    }
120}