orphansv2/compare.py

39 lines
1.2 KiB
Python

#!/usr/bin/env python3
import json
import subprocess
import typing as t
from tempfile import NamedTemporaryFile
import click
@click.command(
context_settings={"show_default": True, "help_option_names": ["-h", "--help"]}
)
@click.argument("v1_json", required=True, type=click.File())
@click.argument("v2_depsolve_result_json", required=True, type=click.File())
def main(v1_json: t.IO[str], v2_depsolve_result_json: t.IO[str]) -> None:
with v1_json, v2_depsolve_result_json:
v1 = json.load(v1_json)
v2 = json.load(v2_depsolve_result_json)
v1_affected_packages = set(v1["affected_packages"])
v1_orphans = set(v1["orphans"])
v1_affected_packages -= v1_orphans
v2_affected_packages = set(v2["affected_pkg_to_orphans"])
with (
NamedTemporaryFile("w", suffix=".v1") as v1_temp,
NamedTemporaryFile("w", suffix=".v2") as v2_temp,
):
for i in sorted(v1_affected_packages):
v1_temp.write(i + "\n")
for i in sorted(v2_affected_packages):
v2_temp.write(i + "\n")
v1_temp.flush()
v2_temp.flush()
subprocess.run(["diff", "--color=auto", "-u", v1_temp.name, v2_temp.name])
if __name__ == "__main__":
main()