Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
eabd8d6
Add some missing type annotations
simu Aug 18, 2026
6f14be9
WIP: Validate component dependencies in `catalog compile`
simu Aug 18, 2026
6d0e443
WIP: Refactor `component compile` to fetch direct component dependencies
simu Aug 19, 2026
b1bd4c5
Implement evaluating of `requiredif` as CEL expression
simu Aug 19, 2026
8e6e345
Make `component compile` backwards-compatible for components that don…
simu Aug 19, 2026
79ef640
Update `component compile` to correctly setup class files for aliased…
simu Aug 20, 2026
a83d476
Add support for subpath for component dependencies
simu Aug 20, 2026
69d790d
Update minverspec when merging dependencies and check for matching path
simu Aug 20, 2026
6127080
Implement tests for component dependency
simu Aug 20, 2026
7bb4f5b
Ensure `component compile` extra classes take precedence over compone…
simu Aug 21, 2026
1334535
Refactor `component compile` to be compatible with all existing test …
simu Aug 21, 2026
f2f467a
Adjust component template rendering to update golden tests by default
simu Aug 21, 2026
b82c0ca
Print 10 slowest tests in `make test_py3.x`
simu Aug 21, 2026
d325233
Draft: recursively discover and fetch component dependencies
simu Aug 21, 2026
9aaaaae
tmp: component dependency test version override
simu Aug 21, 2026
73ee01b
Remove unused fake argocd.libjsonnet helper
simu Aug 21, 2026
d959667
Add tests for `fetch_jsonnet_libraries` error cases
simu Aug 21, 2026
a0b719e
Don't inject argocd dependency when compiling `projectsyn/component-a…
simu Aug 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions commodore/cli/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,12 @@ def decorator(cmd):
show_default=True,
help=f"{add_text} golden tests.",
)(cmd)
click.option(
"--update-golden-tests/--no-update-golden-tests",
default=True,
show_default=True,
help="Whether to run `make gen-golden(-all)` after applying the template.",
)(cmd)
click.option(
"--pp/--no-pp",
default=False if new_cmd else None,
Expand Down Expand Up @@ -305,6 +311,7 @@ def component_new(
owner: str,
copyright_holder: str,
golden_tests: bool,
update_golden_tests: bool,
matrix_tests: bool,
verbose: int,
output_dir: str,
Expand All @@ -331,6 +338,10 @@ def component_new(
t.copyright_holder = copyright_holder
t.golden_tests = golden_tests
t.matrix_tests = matrix_tests
# NOTE(sg): Must be after matrix test config, because that setter adjusts
# gen_golden_target.
if not update_golden_tests:
t.gen_golden_target = None
t.test_cases = ["defaults"] + list(additional_test_case)
t.automerge_patch = automerge_patch
t.automerge_patch_v0 = automerge_patch_v0
Expand Down Expand Up @@ -435,6 +446,7 @@ def component_update(
copyright_holder: str,
template_version: Optional[str],
golden_tests: Optional[bool],
update_golden_tests: Optional[bool],
matrix_tests: Optional[bool],
lib: Optional[bool],
pp: Optional[bool],
Expand Down Expand Up @@ -479,6 +491,10 @@ def component_update(
t.golden_tests = golden_tests
if matrix_tests is not None:
t.matrix_tests = matrix_tests
# NOTE(sg): Must be after matrix test config, because that setter adjusts
# gen_golden_target.
if not update_golden_tests:
t.gen_golden_target = None
if lib is not None:
t.library = lib
if pp is not None:
Expand Down
19 changes: 16 additions & 3 deletions commodore/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import textwrap

from datetime import datetime
from typing import Any, Optional, Union
from typing import Any, Iterable, Optional, Union

import click

Expand Down Expand Up @@ -200,6 +200,7 @@ def render_target(
target: str,
components: dict[str, Component],
component: Optional[str] = None,
extra_classes: Optional[Iterable[str]] = None,
):
if not component:
component = target
Expand Down Expand Up @@ -229,15 +230,27 @@ def render_target(
)
classes.append(f"components.{target}")

if extra_classes:
classes.extend(extra_classes)

return generate_target(inv, target, components, classes, component)


def update_target(cfg: Config, target: str, component: Optional[str] = None):
def update_target(
cfg: Config,
target: str,
component: Optional[str] = None,
extra_classes: Optional[Iterable[str]] = None,
):
click.secho(f"Updating Kapitan target for {target}...", bold=True)
file = cfg.inventory.target_file(target)
os.makedirs(file.parent, exist_ok=True)
targetdata = render_target(
cfg.inventory, target, cfg.get_components(), component=component
cfg.inventory,
target,
cfg.get_components(),
component=component,
extra_classes=extra_classes,
)
yaml_dump(targetdata, file)

Expand Down
4 changes: 4 additions & 0 deletions commodore/compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
verify_version_overrides,
)
from .dependency_mgmt.component_library import create_component_library_aliases
from .dependency_mgmt.component_dependency import validate_catalog_dependencies
from .dependency_mgmt.jsonnet_bundler import (
fetch_jsonnet_libraries,
jsonnet_dependencies,
Expand Down Expand Up @@ -241,6 +242,9 @@ def setup_compile_environment(config: Config) -> tuple[dict[str, Any], Iterable[
# Raise exception if component version override without URL is present in the
# hierarchy.
verify_version_overrides(cluster_parameters, config.get_component_aliases())
# Raise exception if the catalog violates any component dependency version
# requirements.
validate_catalog_dependencies(config, inventory)

for component in config.get_components().values():
ckey = component.parameters_key
Expand Down
Loading
Loading