Skip to content

Commit 60ff705

Browse files
refactor: Use same hashmap while setting the values
1 parent 61902f4 commit 60ff705

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

src/blocks/packages.rs

+15-13
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
294294
}
295295

296296
loop {
297-
let mut package_manager_map: HashMap<&str, u32> =
298-
[("apt", 0), ("pacman", 0), ("aur", 0), ("dnf", 0)].into();
297+
let mut package_manager_map: HashMap<Cow<'static, str>, Value> = HashMap::new();
299298

300299
let mut critical = false;
301300
let mut warning = false;
@@ -309,7 +308,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
309308

310309
let updates_count = updates.len();
311310

312-
package_manager_map.insert(package_manager.name(), updates_count as u32);
311+
package_manager_map.insert(package_manager.name(), Value::number(updates_count));
313312

314313
warning |= warning_updates_regex
315314
.as_ref()
@@ -321,20 +320,16 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
321320

322321
let mut widget = Widget::new();
323322

324-
let total_count = package_manager_map.values().sum();
323+
let total_count = package_manager_map.values().map(get_inner_value).sum();
324+
package_manager_map.insert("icon".into(), Value::icon("update"));
325+
package_manager_map.insert("total".into(), Value::number(total_count));
326+
325327
widget.set_format(match total_count {
326328
0 => format_up_to_date.clone(),
327329
1 => format_singular.clone(),
328330
_ => format.clone(),
329331
});
330-
widget.set_values(map!(
331-
"icon" => Value::icon("update"),
332-
"apt" => Value::number(package_manager_map["apt"]),
333-
"pacman" => Value::number(package_manager_map["pacman"]),
334-
"aur" => Value::number(package_manager_map["aur"]),
335-
"dnf" => Value::number(package_manager_map["dnf"]),
336-
"total" => Value::number(total_count),
337-
));
332+
widget.set_values(package_manager_map);
338333

339334
widget.state = match total_count {
340335
0 => State::Idle,
@@ -357,9 +352,16 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
357352
}
358353
}
359354

355+
fn get_inner_value(value: &Value) -> u32 {
356+
match value.inner {
357+
crate::formatting::value::ValueInner::Number { val, unit: _ } => val as u32,
358+
_ => 0,
359+
}
360+
}
361+
360362
#[async_trait]
361363
pub trait Backend {
362-
fn name(&self) -> &str;
364+
fn name(&self) -> Cow<'static, str>;
363365

364366
async fn get_updates_list(&self) -> Result<Vec<String>>;
365367
}

src/blocks/packages/apt.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ impl Apt {
8585

8686
#[async_trait]
8787
impl Backend for Apt {
88-
fn name(&self) -> &str {
89-
"apt"
88+
fn name(&self) -> Cow<'static, str> {
89+
"apt".into()
9090
}
9191

9292
async fn get_updates_list(&self) -> Result<Vec<String>> {

src/blocks/packages/dnf.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ impl Dnf {
1313

1414
#[async_trait]
1515
impl Backend for Dnf {
16-
fn name(&self) -> &str {
17-
"dnf"
16+
fn name(&self) -> Cow<'static, str> {
17+
"dnf".into()
1818
}
1919

2020
async fn get_updates_list(&self) -> Result<Vec<String>> {

src/blocks/packages/pacman.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ impl Aur {
5757

5858
#[async_trait]
5959
impl Backend for Pacman {
60-
fn name(&self) -> &str {
61-
"pacman"
60+
fn name(&self) -> Cow<'static, str> {
61+
"pacman".into()
6262
}
6363

6464
async fn get_updates_list(&self) -> Result<Vec<String>> {
@@ -127,8 +127,8 @@ impl Backend for Pacman {
127127

128128
#[async_trait]
129129
impl Backend for Aur {
130-
fn name(&self) -> &str {
131-
"aur"
130+
fn name(&self) -> Cow<'static, str> {
131+
"aur".into()
132132
}
133133

134134
async fn get_updates_list(&self) -> Result<Vec<String>> {

0 commit comments

Comments
 (0)