@@ -899,35 +899,15 @@ async fn container_store(
899899 Ok ( ( ) )
900900}
901901
902- fn print_column ( s : & str , clen : u16 , remaining : & mut terminal_size:: Width ) {
903- let l: u16 = s. chars ( ) . count ( ) . try_into ( ) . unwrap ( ) ;
904- let l = l. min ( remaining. 0 ) ;
905- print ! ( "{}" , & s[ 0 ..l as usize ] ) ;
906- if clen > 0 {
907- // We always want two trailing spaces
908- let pad = clen. saturating_sub ( l) + 2 ;
909- for _ in 0 ..pad {
910- print ! ( " " ) ;
911- }
912- remaining. 0 = remaining. 0 . checked_sub ( l + pad) . unwrap ( ) ;
913- }
914- }
915-
916902/// Output the container image history
917903async fn container_history ( repo : & ostree:: Repo , imgref : & ImageReference ) -> Result < ( ) > {
918904 let img = crate :: container:: store:: query_image ( repo, imgref) ?
919905 . ok_or_else ( || anyhow:: anyhow!( "No such image: {}" , imgref) ) ?;
920- let columns = [ ( "ID" , 20u16 ) , ( "SIZE" , 10 ) , ( "CREATED BY" , 0 ) ] ;
921- let width = terminal_size:: terminal_size ( )
922- . map ( |x| x. 0 )
923- . unwrap_or ( terminal_size:: Width ( 80 ) ) ;
924- {
925- let mut remaining = width;
926- for ( name, width) in columns. iter ( ) {
927- print_column ( name, * width, & mut remaining) ;
928- }
929- println ! ( ) ;
930- }
906+ let mut table = comfy_table:: Table :: new ( ) ;
907+ table
908+ . load_preset ( comfy_table:: presets:: NOTHING )
909+ . set_content_arrangement ( comfy_table:: ContentArrangement :: Dynamic )
910+ . set_header ( [ "ID" , "SIZE" , "CRCEATED BY" ] ) ;
931911
932912 let mut history = img. configuration . history ( ) . iter ( ) ;
933913 let layers = img. manifest . layers ( ) . iter ( ) ;
@@ -937,19 +917,15 @@ async fn container_history(repo: &ostree::Repo, imgref: &ImageReference) -> Resu
937917 . and_then ( |s| s. created_by ( ) . as_deref ( ) )
938918 . unwrap_or ( "" ) ;
939919
940- let mut remaining = width;
941-
942920 let digest = layer. digest ( ) . digest ( ) ;
943921 // Verify it's OK to slice, this should all be ASCII
944922 assert ! ( digest. is_ascii( ) ) ;
945- let digest_max = columns[ 0 ] . 1 ;
946- let digest = & digest[ 0 ..digest_max as usize ] ;
947- print_column ( digest, digest_max, & mut remaining) ;
923+ let digest_max = 20usize ;
924+ let digest = & digest[ 0 ..digest_max] ;
948925 let size = glib:: format_size ( layer. size ( ) ) ;
949- print_column ( size. as_str ( ) , columns[ 1 ] . 1 , & mut remaining) ;
950- print_column ( created_by, columns[ 2 ] . 1 , & mut remaining) ;
951- println ! ( ) ;
926+ table. add_row ( [ digest, size. as_str ( ) , created_by] ) ;
952927 }
928+ println ! ( "{table}" ) ;
953929 Ok ( ( ) )
954930}
955931
0 commit comments