Source code for deploy_tools.print_updates

from .models.changes import DeploymentChanges, ReleaseChanges
from .models.deployment import (
    DefaultVersionsByName,
)






def _print_module_updates(release_changes: ReleaseChanges) -> None:
    display_config = {
        "deployed": release_changes.to_add,
        "updated": release_changes.to_update,
        "deprecated": release_changes.to_deprecate,
        "restored": release_changes.to_restore,
        "removed": release_changes.to_remove,
    }

    for action, releases in display_config.items():
        if releases:
            print(f"Modules to be {action}:")

            # Sort for stable output: release lists follow config load (glob) order.
            for release in sorted(
                releases, key=lambda r: (r.module.name, r.module.version)
            ):
                print(f"{release.module.name}/{release.module.version}")
            print()

    if not any(display_config.values()):
        print("No release actions required")


def _print_version_updates(
    old_defaults: DefaultVersionsByName, new_defaults: DefaultVersionsByName
) -> None:
    module_names: set[str] = old_defaults.keys() | new_defaults.keys()

    update_messages: list[str] = []
    for name in sorted(module_names):
        old = old_defaults.get(name, "None")
        new = new_defaults.get(name, "None")
        if not old == new:
            update_messages.append(f"{name} {old} -> {new}")

    if update_messages:
        print("Updated module defaults:")
        for update in update_messages:
            print(update)
    else:
        print("No default version changes")