#!/usr/bin/python3

import os
import subprocess
import json

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKDARKGRAY = '\033[90m'
    OKCYAN = '\033[96m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'


command = "docker ps --format '{\"ID\":\"{{ .ID }}\", \"Image\": \"{{ .Image }}\", \"Names\":\"{{ .Names }}\", \"Status\":\"{{ .Status }}\", \"CreatedAt\":\"{{ .CreatedAt }}\", \"Ports\":\"{{ .Ports }}\"}'"

output = subprocess.check_output(command, shell=True).splitlines()
output.reverse()

if len(output) == 0:
    print("No running docker containers 😔")
else:
    print("")

for entry in output:
    entry_json = entry.decode("utf-8")
    entry_json_object = json.loads(entry_json)

    id = entry_json_object["ID"]
    names = entry_json_object["Names"]
    status = entry_json_object["Status"]
    created = entry_json_object["CreatedAt"]
    image = entry_json_object["Image"]
    ports = entry_json_object["Ports"]
    print(f"{id}\t{bcolors.WARNING}{names}{bcolors.ENDC}\t ({bcolors.OKDARKGRAY}Status: {status}, Created At: {created}{bcolors.ENDC})")
    print(f"  {bcolors.BOLD}Image:{bcolors.ENDC} {image}")
    print(f"  {bcolors.BOLD}Ports:{bcolors.ENDC} {ports}")
    print("")
