#!/bin/env python3

import sys
import json
import logging

from pathlib import Path
from typing import Dict

IMAGESTREAMS_DIR: str = "imagestreams"


class ImageStreamChecker(object):
    version: str = ""
    results: Dict = {}

    def __init__(self, version: str):
        self.version = version

    def load_json_file(self, filename: Path):
        with open(str(filename)) as f:
            return json.load(f)

    def check_version(self, json_dict: Dict):
        return [tags for tags in json_dict["spec"]["tags"] if tags["name"] == self.version]

    def check_latest_tag(self, json_dict: Dict):
        latest_tag_correct: bool = False
        for tags in json_dict["spec"]["tags"]:
            if tags["name"] != "latest":
                continue
            # The latest can link to either "<stream>" or "<stream>-elX" or "<stream>-ubiX"
            if tags["from"]["name"] == self.version or tags["from"]["name"].startswith(self.version + '-'):
                latest_tag_correct = True
        return latest_tag_correct

    def check_imagestreams(self):
        p = Path(".")
        json_files = p.glob(f"{IMAGESTREAMS_DIR}/*.json")
        if not json_files:
            print(f"No json files present in {IMAGESTREAMS_DIR}.")
            return 0
        for f in json_files:
            print(f"Checking file {str(f)}.")
            json_dict = self.load_json_file(f)
            if not (self.check_version(json_dict) and self.check_latest_tag(json_dict)):
                print(f"The latest version is not present in {str(f)} or in latest tag.")
                self.results[f] = False
        if self.results:
            return 1
        print("Imagestreams contains the latest version.")
        return 0


if __name__ == "__main__":
    if len(sys.argv) != 2:
        logging.fatal("%s: %s", sys.argv[0], "VERSION as an argument was not provided")
        sys.exit(1)

    print(f"Version to check is {sys.argv[1]}.")
    isc = ImageStreamChecker(version=sys.argv[1])
    sys.exit(isc.check_imagestreams())


@@ -471,18 +471,22 @@
   re
-turn %5Btags
+s = %5B%5D%0A       
  for
@@ -519,20 +519,111 @@
 %5B%22tags%22%5D
+:%0A            # The name can be%22%3Cstream%3E%22 or %22%3Cstream%3E-elX%22 or %22%3Cstream%3E-ubiX%22%0A           
  if 
+(
 tags%5B%22na
@@ -642,17 +642,137 @@
 .version
-%5D
+ or%0A                    tags%5B%22name%22%5D.startswith(self.version + '-')):%0A                res.append(tags)%0A        return res
 %0A%0A    de

fix version check in check_imagestreams.py