Skip to content

Commit bff8686

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

File tree

4 files changed

+17
-21
lines changed

4 files changed

+17
-21
lines changed

src/blocks/packages.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -294,11 +294,11 @@ 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;
301+
let mut total_count = 0;
302302

303303
// Iterate over the all package manager listed in Config
304304
for package_manager in &package_manager_vec {
@@ -309,7 +309,8 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
309309

310310
let updates_count = updates.len();
311311

312-
package_manager_map.insert(package_manager.name(), updates_count as u32);
312+
package_manager_map.insert(package_manager.name(), Value::number(updates_count));
313+
total_count += updates_count;
313314

314315
warning |= warning_updates_regex
315316
.as_ref()
@@ -321,20 +322,15 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
321322

322323
let mut widget = Widget::new();
323324

324-
let total_count = package_manager_map.values().sum();
325+
package_manager_map.insert("icon".into(), Value::icon("update"));
326+
package_manager_map.insert("total".into(), Value::number(total_count));
327+
325328
widget.set_format(match total_count {
326329
0 => format_up_to_date.clone(),
327330
1 => format_singular.clone(),
328331
_ => format.clone(),
329332
});
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-
));
333+
widget.set_values(package_manager_map);
338334

339335
widget.state = match total_count {
340336
0 => State::Idle,
@@ -359,7 +355,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
359355

360356
#[async_trait]
361357
pub trait Backend {
362-
fn name(&self) -> &str;
358+
fn name(&self) -> Cow<'static, str>;
363359

364360
async fn get_updates_list(&self) -> Result<Vec<String>>;
365361
}

src/blocks/packages/apt.rs

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 4 additions & 4 deletions
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)