@@ -899,35 +899,15 @@ async fn container_store(
899
899
Ok ( ( ) )
900
900
}
901
901
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
-
916
902
/// Output the container image history
917
903
async fn container_history ( repo : & ostree:: Repo , imgref : & ImageReference ) -> Result < ( ) > {
918
904
let img = crate :: container:: store:: query_image ( repo, imgref) ?
919
905
. 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" ] ) ;
931
911
932
912
let mut history = img. configuration . history ( ) . iter ( ) ;
933
913
let layers = img. manifest . layers ( ) . iter ( ) ;
@@ -937,19 +917,15 @@ async fn container_history(repo: &ostree::Repo, imgref: &ImageReference) -> Resu
937
917
. and_then ( |s| s. created_by ( ) . as_deref ( ) )
938
918
. unwrap_or ( "" ) ;
939
919
940
- let mut remaining = width;
941
-
942
920
let digest = layer. digest ( ) . digest ( ) ;
943
921
// Verify it's OK to slice, this should all be ASCII
944
922
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] ;
948
925
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] ) ;
952
927
}
928
+ println ! ( "{table}" ) ;
953
929
Ok ( ( ) )
954
930
}
955
931
0 commit comments