@@ -294,8 +294,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
294
294
}
295
295
296
296
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 ( ) ;
299
298
300
299
let mut critical = false ;
301
300
let mut warning = false ;
@@ -309,7 +308,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
309
308
310
309
let updates_count = updates. len ( ) ;
311
310
312
- package_manager_map. insert ( package_manager. name ( ) , updates_count as u32 ) ;
311
+ package_manager_map. insert ( package_manager. name ( ) , Value :: number ( updates_count) ) ;
313
312
314
313
warning |= warning_updates_regex
315
314
. as_ref ( )
@@ -321,20 +320,16 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
321
320
322
321
let mut widget = Widget :: new ( ) ;
323
322
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
+
325
327
widget. set_format ( match total_count {
326
328
0 => format_up_to_date. clone ( ) ,
327
329
1 => format_singular. clone ( ) ,
328
330
_ => format. clone ( ) ,
329
331
} ) ;
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) ;
338
333
339
334
widget. state = match total_count {
340
335
0 => State :: Idle ,
@@ -357,9 +352,16 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> {
357
352
}
358
353
}
359
354
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
+
360
362
#[ async_trait]
361
363
pub trait Backend {
362
- fn name ( & self ) -> & str ;
364
+ fn name ( & self ) -> Cow < ' static , str > ;
363
365
364
366
async fn get_updates_list ( & self ) -> Result < Vec < String > > ;
365
367
}
0 commit comments