@@ -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]
361357pub 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}
0 commit comments