Commit f7f54bba authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

feat: check container image rules

Closes #5, #6
parent d19c780e
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -226,6 +226,27 @@ def _check_var(
        )
        err_count += 1

    # check container image rules
    if (
        tbc_var.name.endswith("_IMAGE")
        and tbc_var.default
        and not tbc_var.default.startswith("$")
    ):
        # check: explicit image registry
        img_parts = tbc_var.default.split("/")
        if img_parts[0].find(".") < 0:
            print(
                f"  {AnsiColors.RED}✕ <{tbc_var.name}>: container images must explicitly specify the registry{AnsiColors.RESET}"
            )
            err_count += 1

        # check: latest tag by default
        tag = img_parts[-1].split(":")[-1] if img_parts[-1].find(":") > 0 else "latest"
        if tag != "latest":
            print(
                f"  {AnsiColors.YELLOW}⚠ <{tbc_var.name}/{expected_input_name}>: container images should use 'latest' tag by default ('{tag}' found){AnsiColors.RESET}"
            )

    # check variable declaration from doc (warn only)
    # -----------------------------------
    doc_var = next(filter(lambda dv: dv.var_name == tbc_var.name, doc_vars), None)
@@ -237,7 +258,7 @@ def _check_var(
        # check default
        if doc_var.default(expected_gl_input.type) != expected_gl_input.default:
            print(
                f"  {AnsiColors.YELLOW}⚠ <{tbc_var.name}/{expected_input_name}>: README default ({doc_var.default(tbc_var.type)}) doesn't match Kicker's ({expected_gl_input.default}){AnsiColors.YELLOW}"
                f"  {AnsiColors.YELLOW}⚠ <{tbc_var.name}/{expected_input_name}>: README default ({doc_var.default(tbc_var.type)}) doesn't match Kicker's ({expected_gl_input.default}){AnsiColors.RESET}"
            )

        if doc_var.lock and not tbc_var.secret: