let steps = [ ['step', 'image', 'next_step']; ['0', 'react-simple', '1'], ['1', 'react-multistage', '2'], ['2', 'react-multistage-alpine', '3'], ['3', 'react-nginx', '4'], ['4', 'react-nginx-alpine', '5'], ['5', 'react-bun-rspack', '6'], ['6', 'react-nginx-distroless', '0'], ]; mut max_size = 0B mut min_size = 0B mut max_size_slim = 0B mut min_size_slim = 0B let all_res = docker image ls | from ssv | select REPOSITORY TAG SIZE | into filesize SIZE | where REPOSITORY starts-with "react" for $entry in $steps { let docker_res = $all_res | where REPOSITORY == $entry.image let latest_res = $docker_res | where TAG == 'latest' | get 0 let slim_res = $docker_res | where TAG == 'slim' | get 0 let size: filesize = $latest_res | get SIZE let size_slim: filesize = $slim_res | get SIZE if $max_size == 0MiB or $size >= $max_size { $max_size = $size } if $min_size == 0MiB or $size <= $min_size { $min_size = $size } if $max_size_slim == 0MiB or $size_slim >= $max_size_slim { $max_size_slim = $size_slim } if $min_size_slim == 0MiB or $size_slim <= $min_size_slim { $min_size_slim = $size_slim } } mut current = $steps | where step == '0' | get 0 mut result: table = [] while $current.next_step != '0' { let docker_res = $all_res | where REPOSITORY == $current.image let latest_res = $docker_res | where TAG == 'latest' | get 0 let slim_res = $docker_res | where TAG == 'slim' | get 0 let size: filesize = $latest_res | get SIZE let size_slim: filesize = $slim_res | get SIZE let row = [ ['step', 'image', 'latest_size', 'slim_size', 'latest_times_smaller', 'latest_percent_decrease', 'slim_times_smaller', 'slim_percent_decrease']; [$current.step, $current.image, $size, $size_slim, ($max_size / $size), (($max_size - $size) * 100 / $max_size), ($max_size / $size_slim), (($max_size - $size_slim) * 100 / $max_size)] ] $result = ($result ++ $row) $current = $steps | where step == $current.next_step | get 0 } print $'Max size: ($max_size), Min size: ($min_size)' print $'Max size slim: ($max_size_slim), Min size slim: ($min_size_slim)' $result | to md --pretty | save -f size_comparisons.md $result