Merge pull request #716 from Tayeh/images_cmd

add `podman-compose images` command
This commit is contained in:
Povilas Kanapickas 2024-04-28 20:37:07 +03:00 committed by GitHub
commit 58641f0545
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2851,6 +2851,42 @@ async def compose_stats(compose, args):
pass
@cmd_run(podman_compose, "images", "List images used by the created containers")
async def compose_images(compose, args):
img_containers = [cnt for cnt in compose.containers if "image" in cnt]
data = []
if args.quiet is True:
for img in img_containers:
name = img["name"]
output = await compose.podman.output([], "images", ["--quiet", img["image"]])
data.append(output.decode("utf-8").split())
else:
data.append(["CONTAINER", "REPOSITORY", "TAG", "IMAGE ID", "SIZE", ""])
for img in img_containers:
name = img["name"]
output = await compose.podman.output(
[],
"images",
[
"--format",
"table " + name + " {{.Repository}} {{.Tag}} {{.ID}} {{.Size}}",
"-n",
img["image"],
],
)
data.append(output.decode("utf-8").split())
# Determine the maximum length of each column
column_widths = [max(map(len, column)) for column in zip(*data)]
# Print each row
for row in data:
# Format each cell using the maximum column width
formatted_row = [cell.ljust(width) for cell, width in zip(row, column_widths)]
formatted_row[-2:] = ["".join(formatted_row[-2:]).strip()]
print("\t".join(formatted_row))
###################
# command arguments parsing
###################
@ -3285,6 +3321,11 @@ def compose_kill_parse(parser):
)
@cmd_parse(podman_compose, "images")
def compose_images_parse(parser):
parser.add_argument("-q", "--quiet", help="Only display images IDs", action="store_true")
@cmd_parse(podman_compose, ["stats"])
def compose_stats_parse(parser):
parser.add_argument(