On this page
Monorepo impact analysis command that maps changed files or git diffs to affected packages and their transitive dependents in the workspace.
#rlsbl.commands.monorepo.impact
#rlsbl.commands.monorepo.impact
Monorepo impact analysis command: show affected packages from a change.
#_map_file_to_package
def _map_file_to_package(file_path, projects, root)Map a file path (relative to repo root) to its owning package name.
The one attribution rule, from :mod:rlsbl.ownership: the most specific declared member path wins, the root member owns the residual, and a tool-owned path (changelog state, the workspace directory, the generated router) belongs to no package. Returns the package name, or None.
#_get_changed_files_from_git
def _get_changed_files_from_git(since_ref, root)Run git diff --name-only {since_ref}..HEAD and return file paths.
#_get_affected_packages_from_git
def _get_affected_packages_from_git(since_ref, projects, root)Map git-changed files to workspace package names.
#_is_file_path
def _is_file_path(arg)Heuristic: does the argument look like a file path rather than a package name?
#_compute_impact
def _compute_impact(package_names, graph, depth)Compute direct and transitive dependents for a set of packages.
Returns a dict with: input, direct_dependents, transitive_dependents, test_scope, release_candidates.
#_render_text
def _render_text(impact_data)Format impact data as human-readable text.
#_cmd_impact
def _cmd_impact(args, flags, project_root)Analyze the impact of changes on the monorepo dependency graph.
Returns the impact report -- the caller (the CLI handler) hands it to the framework as the command's machine payload -- or None when there is nothing to report. The human rendering is printed here, except in machine mode, where the envelope owns stdout.