Loading tbc_check/checker.py +31 −6 Original line number Diff line number Diff line Loading @@ -375,7 +375,8 @@ def _check_tpl( kicker: dict[str, any], root_kicker: Optional[dict[str, any]], project_dir: Path, var_prefix: str, prefix: str, job_prefix: str, doc_vars: list[DocVar], ) -> int: """Check a template (either main or variant).""" Loading @@ -395,7 +396,29 @@ def _check_tpl( inputs: dict[str, dict[str, any]] = dict(tpl_spec["spec"]["inputs"]) err_count = 0 # check main template variables # check jobs # ---------- for name, body in tpl_body.items(): if name.startswith("."): # hidden continue if "stage" not in body and "extends" not in body: # not a job? continue # check: all jobs are prefixed with the template prefix if not name.startswith(job_prefix) or ( len(name) > len(job_prefix) and name[len(job_prefix)] != "-" ): print( f" {AnsiColors.RED}✕ job <{name}>: doesn't start with prefix ({job_prefix}){AnsiColors.RESET}" ) err_count += 1 # check variables # --------------- var_prefix = prefix.upper() + "_" # check main variables for var in kicker.get("variables", []): tbc_var = TbcVar.parse_obj(var) err_count += _check_var( Loading Loading @@ -530,11 +553,11 @@ def run(): ) or kicker["name"].lower() ) var_prefix = prefix.upper() + "_" job_prefix: str = kicker.get("job_prefix", prefix) print("=============================================================") print( f"Checking template {AnsiColors.CYAN}{kicker['name']}{AnsiColors.RESET} (vars prefix {AnsiColors.CYAN}\"{var_prefix}\"{AnsiColors.RESET})" f"Checking template {AnsiColors.CYAN}{kicker['name']}{AnsiColors.RESET} (prefix {AnsiColors.CYAN}\"{prefix}\"{AnsiColors.RESET} / job prefix {AnsiColors.CYAN}\"{job_prefix}\"{AnsiColors.RESET})" ) print("=============================================================") if not kicker.get("is_component"): Loading @@ -547,14 +570,16 @@ def run(): print( f"{AnsiColors.BLUE}{AnsiColors.BOLD}→ Main template ({kicker['template_path']}){AnsiColors.RESET}" ) err_count = _check_tpl(kicker, None, project_dir, var_prefix, doc_vars) err_count = _check_tpl(kicker, None, project_dir, prefix, job_prefix, doc_vars) # Check variants for variant in kicker.get("variants", []): print( f"{AnsiColors.BLUE}{AnsiColors.BOLD}→ {variant['name']} variant ({variant['template_path']}){AnsiColors.RESET}" ) err_count += _check_tpl(variant, kicker, project_dir, var_prefix, doc_vars) err_count += _check_tpl( variant, kicker, project_dir, prefix, job_prefix, doc_vars ) if err_count > 0: exit(127) Loading
tbc_check/checker.py +31 −6 Original line number Diff line number Diff line Loading @@ -375,7 +375,8 @@ def _check_tpl( kicker: dict[str, any], root_kicker: Optional[dict[str, any]], project_dir: Path, var_prefix: str, prefix: str, job_prefix: str, doc_vars: list[DocVar], ) -> int: """Check a template (either main or variant).""" Loading @@ -395,7 +396,29 @@ def _check_tpl( inputs: dict[str, dict[str, any]] = dict(tpl_spec["spec"]["inputs"]) err_count = 0 # check main template variables # check jobs # ---------- for name, body in tpl_body.items(): if name.startswith("."): # hidden continue if "stage" not in body and "extends" not in body: # not a job? continue # check: all jobs are prefixed with the template prefix if not name.startswith(job_prefix) or ( len(name) > len(job_prefix) and name[len(job_prefix)] != "-" ): print( f" {AnsiColors.RED}✕ job <{name}>: doesn't start with prefix ({job_prefix}){AnsiColors.RESET}" ) err_count += 1 # check variables # --------------- var_prefix = prefix.upper() + "_" # check main variables for var in kicker.get("variables", []): tbc_var = TbcVar.parse_obj(var) err_count += _check_var( Loading Loading @@ -530,11 +553,11 @@ def run(): ) or kicker["name"].lower() ) var_prefix = prefix.upper() + "_" job_prefix: str = kicker.get("job_prefix", prefix) print("=============================================================") print( f"Checking template {AnsiColors.CYAN}{kicker['name']}{AnsiColors.RESET} (vars prefix {AnsiColors.CYAN}\"{var_prefix}\"{AnsiColors.RESET})" f"Checking template {AnsiColors.CYAN}{kicker['name']}{AnsiColors.RESET} (prefix {AnsiColors.CYAN}\"{prefix}\"{AnsiColors.RESET} / job prefix {AnsiColors.CYAN}\"{job_prefix}\"{AnsiColors.RESET})" ) print("=============================================================") if not kicker.get("is_component"): Loading @@ -547,14 +570,16 @@ def run(): print( f"{AnsiColors.BLUE}{AnsiColors.BOLD}→ Main template ({kicker['template_path']}){AnsiColors.RESET}" ) err_count = _check_tpl(kicker, None, project_dir, var_prefix, doc_vars) err_count = _check_tpl(kicker, None, project_dir, prefix, job_prefix, doc_vars) # Check variants for variant in kicker.get("variants", []): print( f"{AnsiColors.BLUE}{AnsiColors.BOLD}→ {variant['name']} variant ({variant['template_path']}){AnsiColors.RESET}" ) err_count += _check_tpl(variant, kicker, project_dir, var_prefix, doc_vars) err_count += _check_tpl( variant, kicker, project_dir, prefix, job_prefix, doc_vars ) if err_count > 0: exit(127)